db表中的批量插入

时间:2009-08-18 10:26:36

标签: python database

我想要在表中的单个查询中插入一个数组。有什么想法吗?

3 个答案:

答案 0 :(得分:3)

如果使用dbapi访问数据库,则connection.executemany()方法可以正常工作。

con.executemany("INSERT INTO some_table (field) VALUES (?)", [(v,) for v in your_array])

bind参数的格式取决于数据库,sqlite使用?,mysql使用%s,postgresl使用%s或%(key)s,如果传入dicts。要抽象它,您可以使用SQLAlchemy:

import sqlalchemy as sa
metadata = sa.MetaData(sa.create_engine(database_url))
some_table = Table('some_table', metadata, autoload=True)
some_table.insert([{'field': v} for v in your_array]).execute()

答案 1 :(得分:1)

无效(单个插页)单行:

data = [{'id': 1, 'x': 2, 'y': 4}, {'somethig': 'other', 'otherfield': 5, 'y': 6}]
table = 'table_name'
connection = connect() # DBAPI connection

map(connection.cursor().execute, ('INSERT INTO %s (%s) VALUES (%s)' % ('table', ','.join(x), ','.join(['%s'] * len(x))) for x in data), (x.values() for x in data))

答案 2 :(得分:0)

如果您使用的是PostgreSQL,则可以使用COPY statement