使用create_engine()
时mssql+pyodbc
语句似乎不起作用,它抛出了InterfaceError
。当我尝试使用turbodbc
时,也会发生同样的情况。但是,在使用mssql+pymssql
时,效果很好。
主要是,我正在尝试加快df.to_sql()
操作。为此,我尝试了两种选择。
fastexecutemany = True
。 turbodbc
。在create_engine()
命令中使用时,两个选项都会引发相同的错误。
我正在使用Windows 10和Windows身份验证Python 3.7。
可以使用pyodbc建立连接。因此,这可行:
cnxn = pyodbc.connect("Driver={ODBC Driver 13 for SQL Server};"
"Server=server;"
"Database=database;"
"Trusted_Connection=yes;")
我可以这样做:
cnx = create_engine('mssql+pymssql://@server/database')
df.to_sql(name = name, con=cnx, if_exists = 'append', index=False)
我做不到:
cnx = create_engine('mssql+pyodbc://@server/database')
df.to_sql(name = name, con=cnx, if_exists = 'append', index=False)
我收到以下错误消息:
InterfaceError: (pyodbc.InterfaceError) ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)')(Background on this error at: http://sqlalche.me/e/rvf5)
毫无疑问,当我尝试
时也会发生同样的事情cnx = create_engine('mssql+turbodbc://@server/database')
很显然,我设置引擎并尝试连接数据库的方式失败了。