首页 > 解决方案 > 使用 sqlalchemy 将字典列表批量复制到 postgres

问题描述

我有一个字典列表,list_dict如下所示:

[{u'default_bhp': False, u'price_period': u'Monthly'},{u'default_bhp': False, u'price_period': u'Yearly'}]

目前我正在使用以下方法将其插入到我的数据库中:

conn = engine.connect()
conn.execute(ModelClass.__table__.insert(), list_dict)

我只是想检查是否有更快的方法将数据插入数据库,因为我有大量数据。

我们可以在这里使用散装copy或其他东西吗?

如何使用use_batch_mode功能?如下所示:

 engine = create_engine('postgresql+psycopg2://postgres:postgres@localhost/test_db', use_batch_mode=True)
conn = engine.connect()
    conn.execute_batch(ModelClass.__table__.insert(), list_dict)

标签: pythonpostgresqlsqlalchemy

解决方案


考虑使用bulk_insert_mappings(如果您还不知道这一点),这可能最接近您想要实现的目标。

但是,如果您实际上有很多数据,那么急切地解压到 dicts 列表中可能不是一个好方法,因此您可能需要在 bulk_insert 之上进行 grouper/chunk 管理


推荐阅读