Python 使用SQLAlchemy Core批量插入列表值

Python 使用SQLAlchemy Core批量插入列表值,python,mysql,database,sqlalchemy,Python,Mysql,Database,Sqlalchemy,我想使用SQLAlchemy Core将字符串列表批量插入MySQL数据库 engine = create_engine("mysql+mysqlconnector://...") meta = MetaData() meta.bind = engine 我的表格布局如下所示-加上两个当前未使用的列(不相关的1/2): 不幸的是,以下操作不起作用-它插入一个空行。正确的方法是什么 MyTable.insert().execute(['blue', 'red', 'green']) 这里有一种

我想使用SQLAlchemy Core将字符串列表批量插入MySQL数据库

engine = create_engine("mysql+mysqlconnector://...")
meta = MetaData()
meta.bind = engine
我的表格布局如下所示-加上两个当前未使用的列(不相关的1/2):

不幸的是,以下操作不起作用-它插入一个空行。正确的方法是什么

MyTable.insert().execute(['blue', 'red', 'green'])

这里有一种方法:

MyTable.__table__.insert().execute([{'color': 'blue'}, 
                                    {'color': 'red'}, 
                                    {'color': 'green'}])
from sqlalchemy import MetaData, Table, create_engine

engine = create_engine("mysql+mysqlconnector://....")
metadata = MetaData()
metadata.reflect(engine, only=['MyTable'])
table = Table('MyTable', meta, autoload=True, autoload_with=engine)

engine.execute(table.insert(), [{'color': 'blue'}, 
                            {'color': 'red'}, 
                            {'color': 'green'}])
或者,使用
connection.execute()

您可以很容易地从您的列表中创建一个目录列表:

[{'color': value} for value in colors]
另一种方法是:

MyTable.__table__.insert().execute([{'color': 'blue'}, 
                                    {'color': 'red'}, 
                                    {'color': 'green'}])
from sqlalchemy import MetaData, Table, create_engine

engine = create_engine("mysql+mysqlconnector://....")
metadata = MetaData()
metadata.reflect(engine, only=['MyTable'])
table = Table('MyTable', meta, autoload=True, autoload_with=engine)

engine.execute(table.insert(), [{'color': 'blue'}, 
                            {'color': 'red'}, 
                            {'color': 'green'}])

查看文档以获得非常快速的插入,查看使用较低级别的
会话。批量插入映射(Table,lst)
查看文档。谢谢,是否可以只使用列表(无字典)?@fanti说是的,这应该是一个字典列表。@fanti为什么不从列表中创建一个dict列表,就像我在回答中提到的那样?@alecxe:有没有办法向SQLAlchemy中的批量插入语句传递提示?这样我就可以做得更快?例如,Oracle中的:
/*+append*/
有助于加快批量插入的速度。也许这有助于以后的人,我们需要使用table来访问类中底层的table对象。i、 e.MyTable.uuu table_uuu=table相当于经典sqlalchemy方法的table('MyTable')、meta…)构造。而insert是一种经典的表方法