Python Pandas.to_sql函数抛出导入错误(DLL加载失败)

Python Pandas.to_sql函数抛出导入错误(DLL加载失败),python,pandas,Python,Pandas,当我在Pandas系列上调用.to_sql()时,我得到一个ImportError异常: 发生异常:导入错误 DLL加载失败:找不到指定的模块 我导入了pandas和pyodbc,我能够连接到数据库服务器并通过读取数据。读取sql查询()以及在代码的其他地方使用pandas数据帧。它仅在我尝试调用.to_sql() 熊猫版本0.23.4 import pandas as pd import numpy as np import pyodbc conn = pyodbc.connect('Driv

当我在Pandas系列上调用
.to_sql()
时,我得到一个
ImportError
异常:

发生异常:导入错误
DLL加载失败:找不到指定的模块

我导入了
pandas
pyodbc
,我能够连接到数据库服务器并通过
读取数据。读取sql查询()
以及在代码的其他地方使用pandas数据帧。它仅在我尝试调用
.to_sql()

熊猫版本0.23.4

import pandas as pd
import numpy as np
import pyodbc
conn = pyodbc.connect('Driver={SQL Server};Server=' + prm.DATASOURCE + ';DATABASE=' + prm.DATABASE + ';UID=' + prm.USER + ';PWD=' + prm.PASSWORD)
df.to_sql('table_name', conn, if_exists='append', index=True, index_label=['country_id','year_id'])
感谢您看到这一点,问题似乎在于DataFrame.to_sql应该与SQLAlchemy一起使用。您是否安装了SQLAlchemy?如果是这样,可以尝试传入SQLAlchemy引擎,而不是pyodbc连接

从sqlalchemy导入创建引擎
#创建您的引擎。
引擎=创建引擎('mssql+pyodbc://user:password@服务器/数据库')
#使用引擎而不是pyodbc连接
df.to_sql('table_name',engine,if_exists='append',index=True,index_label=['country_id','year_id']))
从上面链接的文档中:

pandas.io.sql模块提供了一组查询包装器,以方便数据检索和减少对特定于数据库的API的依赖。。。。。。 如果未安装SQLAlchemy,则仅为sqlite提供回退

con:sqlalchemy.engine.engine或sqlite3.Connection

使用SQLAlchemy可以使用该数据库支持的任何数据库 图书馆 为sqlite3.Connection对象提供了传统支持


你的第二个论点是“self.conn”而不是“conn”?皮特:是的,谢谢你noticing@Teddy,我不这么认为。OP说他们可以使用pd.read_sql_query()@pistolpate,谢谢你指出这一点。我认为@Nuno应该首先探索这一途径,因为只需在谷歌上搜索
importorror(DLL加载失败)
就会显示很多类似问题标记为已解决的SO帖子。:)@Teddy,不,pandas.DataFrame.to_sql需要一个sqlalchemy引擎,而不是pyodbc连接。请参阅下面我的帖子。改为sqlalchemy by。创建引擎,解决了问题!我不知道你可以直接用pyodbc读写。谢谢你,我也不知道,直到我仔细研究了它,说实话,这根本不是直觉。我希望他们通过将“con”参数重命名为“engine”使其更加明确。不客气。