python - 使用 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)
解决方案
考虑使用bulk_insert_mappings(如果您还不知道这一点),这可能最接近您想要实现的目标。
但是,如果您实际上有很多数据,那么急切地解压到 dicts 列表中可能不是一个好方法,因此您可能需要在 bulk_insert 之上进行 grouper/chunk 管理
推荐阅读
- typescript - 如何在对象内联中键入函数?
- javascript - 为什么我的道具返回带有值的索引?
- apache-kafka - Kafka Consumer - 在暂停时继续调用 poll()?
- sas - SAS中有3个不同组的2个ID
- python - Pandas 中的移位和乘法
- php - 未定义的属性:Posts::$posts_model 并在 null 上调用成员函数 create_post()
- python - 如何在熊猫数据框中的列中填充字母数字系列?
- java - 从字符串创建对象列表
- asp.net - 将带有路由 ID 的输入一起传递给控制器方法
- sql - 如何在 PostgresSQL 中对多对多关系实施约束?