【问题标题】:Multiple inserts at a time using SQLAlchemy with Postgres使用 SQLAlchemy 和 Postgres 一次插入多个
【发布时间】:2019-11-24 12:37:44
【问题描述】:

我目前的单次插入代码是:

def add_item(a_email,a_first,a_last,a_address,a_tag):
    query = db.insert(table_items).values(email=a_email,firstname=a_first,lastname=a_last,address=a_address,tag=a_tag)
    connection.execute(query)

问题是,我要插入数百万个条目,并且需要很长时间才能逐个完成。例如,一次插入 10 个条目的最佳方法是什么?假设我有一个清单:

my_items = []
my_items.append(["test@test.com","John","Doe","1234 1st Street","Tag1"])

假设我在 my_items 中附加了 10 个项目,我怎样才能一次将它们全部放入我的 Postgres 数据库?

【问题讨论】:

标签: python postgresql sqlalchemy


【解决方案1】:

尝试使用来自 sqlalchemy.dialects.postgresql 的插入,您将需要传递一个字典列表(键值对应于您的 column_name 和该行的数据。它基本上将其转换为所有行的单个插入语句。 一个例子是

from sqlalchemy.dialects.postgresql import insert```
...
Data=[{'column1':value1},{'column1':valu1}]
stmt=insert(Table,Data)
db.session().execute(stmt)

正如评论中提到的,您也可以使用COPY 命令

【讨论】:

  • 不需要专门从方言导入。如果使用的方言支持,“普通”插入支持多个值。
  • 嗯,这几乎对我有用,但它要求我输入“id”(这只是主键)。但我从不提供主键——我总是让它自动生成。如何使用这种方法但不提供列?
  • @Max ,您必须从字典中删除该列。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-15
  • 2021-03-07
  • 2017-11-15
  • 2013-12-31
  • 1970-01-01
  • 2015-04-14
  • 1970-01-01
相关资源
最近更新 更多