如何将SQLite数据库文件读取到Polars DataFrame?解决AttributeError
解决Polars读取SQLite数据库时的AttributeError问题
问题原因
Polars的pl.read_sql()方法不直接支持Python标准库的sqlite3.Connection对象,它要求传入的是SQLAlchemy引擎实例或数据库连接字符串。报错是因为底层代码尝试对传入的原生连接对象执行字符串操作(比如split),但该对象并非字符串类型。
解决方法
方法1:使用SQLAlchemy引擎(推荐方案)
首先确保安装了SQLAlchemy:
pip install sqlalchemy
修改代码如下,用SQLAlchemy创建引擎后传入read_sql:
import polars as pl from sqlalchemy import create_engine # 创建SQLite的SQLAlchemy引擎 engine = create_engine('sqlite:///database.sqlite') # 读取数据到Polars DataFrame df = pl.read_sql("SELECT * from table_name", engine) print(df)
方法2:原生sqlite3查询后转成Polars DataFrame
如果不想额外依赖SQLAlchemy,可以先用sqlite3执行查询,再手动转换结果:
import sqlite3 import polars as pl conn = sqlite3.connect('database.sqlite') cursor = conn.cursor() # 执行SQL查询 cursor.execute("SELECT * from table_name") # 获取结果列名 columns = [col[0] for col in cursor.description] # 获取所有数据行 data_rows = cursor.fetchall() # 将结果转换为Polars DataFrame df = pl.DataFrame(data_rows, schema=columns) print(df) # 关闭数据库连接 conn.close()
内容的提问来源于stack exchange,提问作者canon-ball
相关产品推荐
相关产品推荐

