postgresql 如何使用SQLAlchemy在自动增量列中一次插入多个值

jtoj6r0c  于 2022-11-29  发布在  PostgreSQL
关注(0)|答案(1)|浏览(147)

我正在使用Postgres数据库和sqlalchemy核心。我有下表

CREATE TABLE IF NOT EXISTS id_generation (id SERIAL PRIMARY KEY)

并且我尝试使用下面的查询在id列中插入多个值。number_of_ids可以是1000的倍数。

for _ in range(number_of_ids):
    conn.execute('INSERT INTO id_generation VALUES (DEFAULT)')

我只是想知道有没有其他的方法来编写这个查询使用Sqlalchemy核心。我们如何可以优化它?

mklgxw1f

mklgxw1f1#

假设您使用psycopg2作为连接器,您可以将一个空字典列表传递给conn.execute,对应于要插入的行数,SQLAlchemy将发出一个带有多个VALUES子句的INSERT语句。

import sqlalchemy as sa

...

vals = [{} for _ in range(100)]

with engine.begin() as conn:
    conn.execute(sa.text(INSERT INTO id_generation VALUES (DEFAULT)'), vals)

SQLAlchemy使用了psycopg2的快速执行助手,如本文所述。

相关问题