使用PeeWee ORM我有以下查询:
query = DataModel.select()where(DataModel.field == "value")
有没有办法将query
转换为pandas DataFrame而不迭代所有值?我正在寻找更多" Pythonic"这样做的方式。
答案 0 :(得分:16)
假设query
的类型为peewee.SelectQuery
,您可以这样做:
df = pd.DataFrame(list(query.dicts()))
答案 1 :(得分:1)
以下是 更有效的方式 ,因为它避免了创建列表然后将其传递给pandas数据帧。它还具有 保留列顺序的附带好处 :
df = pd.read_sql(query.sql()[0], database.connection())
您需要直接访问peewee database
,例如,quickstart tutorial对应于:
db = SqliteDatabase('people.db')
当然,您也可以创建自己的数据库连接。
缺点: 如果您在两个表中重复列,请务必小心,例如: id
列会出现两次。所以在继续之前一定要纠正这些。
如果您使用peewee代理 import peewee as pw; database_proxy = pw.Proxy()
,那么连接就在这里:
database_proxy.obj.connection()