使用Pandas从SQLite表创建DataFrame时为何抛出NotImplementedError?
解决Pandas读取SQLite表时的NotImplementedError异常
问题出在pd.read_sql_table()的使用限制上——这个方法只支持SQLAlchemy提供的连接对象,并不兼容sqlite3原生的连接实例,所以你用sqlite3直接创建的connection会触发这个异常。
给你两种可行的解决办法:
方法一:改用pd.read_sql_query()
直接编写查询语句,配合sqlite3原生连接使用,这是最直接的修改方式:
import pandas as pd import sqlite3 as sq with sq.connect("master.db") as con: table = "personal" # 直接执行SELECT查询获取整张表数据 df = pd.read_sql_query(f"SELECT * FROM {table}", con)
如果你的表名包含特殊字符(比如空格、关键字),建议用参数化方式避免语法问题:
df = pd.read_sql_query("SELECT * FROM ?", con, params=(table,))
方法二:使用SQLAlchemy连接
如果坚持想用read_sql_table(),可以通过SQLAlchemy创建连接引擎,Pandas对这种连接支持良好:
import pandas as pd from sqlalchemy import create_engine # 创建SQLite引擎,路径和sqlite3一致 engine = create_engine("sqlite:///master.db") # 方式1:用上下文管理器管理连接 with engine.connect() as con: df = pd.read_sql_table("personal", con) # 方式2:直接传入引擎(Pandas会自动处理连接) df = pd.read_sql_table("personal", engine)
两种方法都能正常读取SQLite表数据,根据自己的习惯选择即可。
内容的提问来源于stack exchange,提问作者Anton
相关产品推荐
相关产品推荐

