当我在熊猫系列中致电.to_sql()
时,遇到ImportError
异常:
发生异常:ImportError
DLL加载失败:找不到指定的模块。
我导入了pandas
和pyodbc
,并且能够连接到数据库服务器并通过.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'])
谢谢
答案 0 :(得分:1)
通过查看此SO post和pandas 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提供后备。
con:sqlalchemy.engine.Engine或sqlite3.Connection
使用SQLAlchemy可以使用该数据库支持的任何数据库 图书馆。 为sqlite3.Connection对象提供了旧版支持。