Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python和sql alchemy在列表列表的postgres中插入批处理_Python_Postgresql_Sqlalchemy - Fatal编程技术网

使用python和sql alchemy在列表列表的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"],

我有一张表格上的数据。我必须使用sql alchemy将其插入表中。我想使用rows列表在表中插入一批行(现在我有三行,但大约有50.000行),就像elasticsearch中的bluk,但使用postgres。你能给我一些想法或代码示例吗?提前感谢你的帮助

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上传数据,