Python 为什么要在sqlalchemy中设置local_infle=1来加载本地文件?sqlalchemy中不允许加载文件的问题

Python 为什么要在sqlalchemy中设置local_infle=1来加载本地文件?sqlalchemy中不允许加载文件的问题,python,mysql,python-2.7,sqlalchemy,Python,Mysql,Python 2.7,Sqlalchemy,我正在使用sqlalchemy连接MySQL数据库,发现了一个奇怪的行为。 如果我质疑 LOAD DATA LOCAL INFILE 'C:\\\\Temp\\\\JaydenW\\\\iata_processing\\\\icer\\\\rename\\\\ICER_2017-10- 12T09033 7Z023870.csv 它弹出一个错误: sqlalchemy.exc.InternalError: (pymysql.err.InternalError) (1148, u'T

我正在使用sqlalchemy连接MySQL数据库,发现了一个奇怪的行为。 如果我质疑

LOAD DATA LOCAL INFILE 
'C:\\\\Temp\\\\JaydenW\\\\iata_processing\\\\icer\\\\rename\\\\ICER_2017-10- 
12T09033
7Z023870.csv    
它弹出一个错误:

sqlalchemy.exc.InternalError: (pymysql.err.InternalError) (1148, u'The used 
command is not allowed with this MySQL versi
on') [SQL: u"LOAD DATA LOCAL INFILE 
'C:\\\\Temp\\\\JaydenW\\\\iata_processing\\\\icer\\\\rename\\\\ICER_2017-10- 
12T090337Z023870.csv' INTO TABLE genie_etl.iata_icer_etl LINES TERMINATED BY 
'\\n' 
IGNORE 1 Lines   (rtxt);"] (Background on this error at: 
http://sqlalche.me/e/2j85)
我发现原因是: 我需要将参数设置为

args = "mysql+pymysql://"+username+":"+password+"@"+hostname+"/"+database+"? 
local_infile=1"
如果我使用MySQL官方连接库。我不需要这样做

myConnection = MySQLdb.connect(host=hostname, user=username, passwd=password, db=database)

有人能帮我理解这两种机制之间的区别吗?

原因是这两种机制使用不同的驱动程序。 在SQLAlchemy中,您似乎正在使用,它使用创建DB连接。如果用户希望使用
LOAD DATA local
命令,则需要显式传递
local\u infle
参数

另一个示例使用,它基本上是围绕MySQL C API的包装器(据我所知,它不是官方连接库;它也可以在SQLAlchemy上获得)。这显然是以默认情况下启用的方式创建连接的