如何使用PeeWee将选择查询转换为pandas DataFrame

时间:2017-03-04 12:47:56

标签: python-2.7 pandas peewee

使用PeeWee ORM我有以下查询:

query = DataModel.select()where(DataModel.field == "value")

有没有办法将query转换为pandas DataFrame而不迭代所有值?我正在寻找更多" Pythonic"这样做的方式。

2 个答案:

答案 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()