我正在使用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 core编写这个查询。我们如何优化它?
假设您使用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的快速执行助手,如下所示。