使用python和sql alchemy在列表列表的postgres中插入批处理
我有一张表格上的数据。我必须使用sql alchemy将其插入表中。我想使用rows列表在表中插入一批行(现在我有三行,但大约有50.000行),就像elasticsearch中的bluk,但使用postgres。你能给我一些想法或代码示例吗?提前感谢你的帮助使用python和sql alchemy在列表列表的postgres中插入批处理,python,postgresql,sqlalchemy,Python,Postgresql,Sqlalchemy,我有一张表格上的数据。我必须使用sql alchemy将其插入表中。我想使用rows列表在表中插入一批行(现在我有三行,但大约有50.000行),就像elasticsearch中的bluk,但使用postgres。你能给我一些想法或代码示例吗?提前感谢你的帮助 fields = ["NAME", "MACHINE", "PRE", "DATE", "COMP"] rows = [ ["ECO", "A07", 6, "2016-03-07", "Card"],
fields = ["NAME", "MACHINE", "PRE", "DATE", "COMP"]
rows = [
["ECO", "A07", 6, "2016-03-07", "Card"],
["LIN", "A01", 1, "2016-03-07", "Reader"],
["SUM", "A02", 2, "2016-03-07", "Scanner"]
]
如果传递字典列表,则可以使用自动执行批量插入的
例如:
engine = sqlalchemy.create_engine(db_url, echo=True) # echo for testing
db = engine.connect()
meta = sqlalchemy.MetaData()
foo_table = sqlalchemy.Table('foo', meta, autoload=True, autoload_with=engine)
foo_ins = foo_table.insert()
# fields, rows - as assigned in the question
xs = [ { k: v for k, v in zip(fields, row) } for row in rows ]
db.execute(foo_ins, xs)
如果传递字典列表,则可以使用自动执行批量插入的
例如:
engine = sqlalchemy.create_engine(db_url, echo=True) # echo for testing
db = engine.connect()
meta = sqlalchemy.MetaData()
foo_table = sqlalchemy.Table('foo', meta, autoload=True, autoload_with=engine)
foo_ins = foo_table.insert()
# fields, rows - as assigned in the question
xs = [ { k: v for k, v in zip(fields, row) } for row in rows ]
db.execute(foo_ins, xs)
你试过什么了吗?嗨,我一行一行地添加了,但我没有找到任何方法来批量完成。我在与Amazon Redshift和psycopg合作时遇到过同样的问题。我不知道sql炼金术,但在我的例子中,我最终使用了两种方法:构造巨大的sql查询以一次插入所有行,或者使用amazon redshift ssh接口使用csv上传数据。可能重复,您尝试过什么吗?嗨,我逐行添加,但我找不到任何方法可以批量完成,我在与Amazon Redshift和psycopg合作时遇到过同样的问题。我不知道sql炼金术,但在我的例子中,我最终使用了两种方法:构造巨大的sql查询以一次插入所有行,或者使用amazon redshift ssh接口使用csv上传数据,