如何修复Python sqlite3.OperationalError: no such table报错问题
问题解答
代码引用的表
你编写的SQL语句SELECT * FROM data;中指定查询的是名为data的表,报错no such table: data的原因是你收到的data.db文件内不存在该名称的表。
解决步骤
- 第一步:查询
data.db中实际存在的所有表名
运行以下代码获取当前数据库内的所有表名:
import sqlite3 # 连接本地的data.db文件 conn = sqlite3.connect('data.db') cursor = conn.cursor() # SQLite系统表sqlite_master存储了所有库内对象的元数据 cursor.execute("SELECT name FROM sqlite_master WHERE type='table';") all_tables = cursor.fetchall() print("数据库中存在的表:", all_tables) conn.close()
运行后输出结果类似[('sales_data',), ('user_info',)],其中括号内的字符串就是实际的表名。
- 第二步:替换SQL语句中的表名完成导入
将你原有代码里SQL语句中的data替换为上一步查到的实际表名即可,完整示例如下:
import pandas as pd import sqlite3 conn = sqlite3.connect('data.db') # 此处将actual_table_name替换为你查到的真实表名 sql = "SELECT * FROM actual_table_name;" df = pd.read_sql_query(sql, conn) conn.close() # 验证导入结果 df.head()
补充说明
你原有代码中的注释# This create data.sqlite``是错误的:sqlite3.connect('data.db')的逻辑是如果路径下已存在同名文件就直接打开,不存在才会新建空白数据库文件,只要你确认运行代码的路径下存放的是同事给的data.db文件,就不会产生新建空白库的问题。
内容的提问来源于stack exchange,提问作者Ankita
相关产品推荐
相关产品推荐

