熊猫.to_sql函数引发ImportError(DLL加载失败)

时间:2019-03-08 14:53:50

标签: python pandas

当我在熊猫系列中致电.to_sql()时,遇到ImportError异常:

  

发生异常:ImportError
  DLL加载失败:找不到指定的模块。

我导入了pandaspyodbc,并且能够连接到数据库服务器并通过.read_sql_query()读取数据,以及在代码中的其他地方使用pandas Dataframe。仅在我尝试致电.to_sql()

时显示

Pandas版本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'])

谢谢

1 个答案:

答案 0 :(得分:1)

通过查看此SO postpandas docs,看来问题似乎在于DataFrame.to_sql是与SQLAlchemy一起使用的。您是否安装了SQLAlchemy?如果是这样,也许尝试传递SQLAlchemy引擎而不是您的pyodbc连接。

from sqlalchemy import create_engine

# Create your engine.
engine = create_engine('mssql+pyodbc://user:password@server/database')

# Use the engine instead of the pyodbc connection
df.to_sql('table_name', engine, if_exists='append', index=True, index_label=['country_id','year_id'])

来自上面链接的Pandas文档:

  

pandas.io.sql模块提供了查询包装的集合,以方便数据检索并减少对特定于DB的API的依赖......   如果未安装SQLAlchemy,则仅为sqlite提供后备。

pandas.DataFrame.to_sql docs

  

con:sqlalchemy.engine.Engine或sqlite3.Connection

     

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