You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何读取SQLite生成的.db文件?代码提示数据为空如何解决

问题核心错误点
  • 查询表的SQL语法错误:sqlite_master系统表的type字段标识数据库对象类型,表对应的固定值是'table',你代码里写的'Sheet1'是表名不是对象类型,必然查询不到结果
  • 变量名拼写错误:你定义的列表变量是table_list,打印时写的是tablelist,缺少下划线会直接报变量不存在错误
  • 未执行查询就尝试读取游标结果:第二段代码写完Excel导入后,没有主动执行SELECT查询语句,游标c没有关联任何结果集,自然读不到数据
  • 数据库后缀不匹配:你提到已存储为.db格式,但代码里连接的是.sqlite后缀的数据库,首先要确认你要读取的数据库文件路径、文件名完全正确
正确实现代码

场景1:还未完成Excel导入到SQLite,需要先导入再读取

import pandas as pd
import sqlite3

# 1. 配置参数
excel_path = 'filename.xlsx' # 替换为你的Excel文件实际路径
db_path = 'xyzDB.db' # 替换为你要生成的.db文件路径,和你自己的文件名匹配
table_name = 'Sheet1' # 要存入SQLite的表名,可自定义

# 2. 建立数据库连接
conn = sqlite3.connect(db_path)

# 3. 分块导入Excel到SQLite
chunksize = 10000
for chunk in pd.read_excel(excel_path, chunksize=chunksize):
    # 替换列名里的空格为下划线,避免SQL语法问题
    chunk.columns = chunk.columns.str.replace(' ', '_')
    # if_exists参数:replace是覆盖原表,append是追加,fail是存在就报错
    chunk.to_sql(name=table_name, con=conn, if_exists='append', index=False)

# 4. 读取SQLite表内容
# 先执行查询语句
cursor = conn.cursor()
cursor.execute(f"SELECT * FROM {table_name}")

# 读取列名
col_names = [desc[0] for desc in cursor.description]
print('表列名:', col_names)

# 读取全部行数据
all_rows = cursor.fetchall()
print('表数据行数:', len(all_rows))
# 打印前10行验证
for row in all_rows[:10]:
    print(row)

# 关闭连接
conn.close()

场景2:已经有生成好的.db文件,直接读取即可

import pandas as pd
import sqlite3

# 1. 配置参数
db_path = 'xyzDB.db' # 替换为你现有的.db文件实际路径
table_name = 'Sheet1' # 替换为你之前导入时设置的表名,不确定的话先查所有表

# 2. 建立连接
conn = sqlite3.connect(db_path)
cursor = conn.cursor()

# 可选:如果不确定表名,先查询当前库所有表
cursor.execute("SELECT name FROM sqlite_master WHERE type='table'")
all_tables = [t[0] for t in cursor.fetchall()]
print('当前库所有表名:', all_tables)

# 3. 读取指定表数据
# 方法1:用pandas直接读,更方便
df = pd.read_sql(f"SELECT * FROM {table_name}", con=conn)
print(df.head()) # 打印前5行验证

# 方法2:用游标读
cursor.execute(f"SELECT * FROM {table_name}")
col_names = [desc[0] for desc in cursor.description]
rows = cursor.fetchall()
print(col_names)
print(rows[:10])

# 关闭连接
conn.close()

内容的提问来源于stack exchange,提问作者Inara

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 15:57:03