2009-08-18 90 views
-1

我有一個數組我想插入表中的單個查詢。任何想法?批量插入數據庫表

+0

RDBMS你說的是哪一個? – 2009-08-18 10:30:31

+0

以及哪個ORM,如果有的話?你沒有給我們足夠的信息。 – 2009-08-18 10:39:15

+0

這是DBAPI的一流功能。 http://www.python.org/dev/peps/pep-0249/由於.executemany這樣做,它不能成爲你的問題。你在問什麼? – 2009-08-18 10:58:36

回答

3

如果您使用dbapi來訪問數據庫,則connection.executemany()方法有效。

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

的bindparameter的格式取決於該數據庫時,SQLite用途上?,MySQL使用%S,postgresl使用%s或%(鍵)■如果傳入http://stardict.sourceforge.net/Dictionaries.php下載。抽象這一點,你可以使用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

由於uneffective(個體插入)的一行:

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))