如何解决向SSMS写入数据时的实例化错误?
解决Python向SQL Server写入数据时的AttributeError问题
已实现从Python读取SQL Server数据,但写入时触发错误,报错信息如下:
AttributeError: 'pyodbc.Connection' 对象没有属性 '_instantiate_plugins'
问题原因
SQLAlchemy的create_engine()函数需要传入连接字符串,而非已创建好的pyodbc.Connection实例。直接传入已建立的cnxn连接对象,会导致SQLAlchemy无法初始化引擎必需的插件机制,从而抛出该错误。
修正后的代码
import pandas as pd from sqlalchemy import create_engine import pyodbc # 构造示例数据 df2 = pd.DataFrame({'key':['a','a','b'], 'val':[435,7,6]}) # 替换为你的SQL Server连接字符串 # 格式示例:mssql+pyodbc://用户名:密码@服务器地址/数据库名?driver=ODBC+Driver+17+for+SQL+Server connection_string = "mssql+pyodbc://your_username:your_password@your_server/your_db?driver=ODBC+Driver+17+for+SQL+Server" # 创建SQLAlchemy引擎 cn = create_engine(connection_string) # 写入数据到SQL Server rows_uploaded = df2.to_sql( OUTPUT_TABLE_NAME, cn, schema='sample_schema', if_exists='replace', index=False, chunksize=1000 )
额外说明
- 若之前使用pyodbc的
connect()方法创建连接,只需将对应参数转换为上述格式的连接字符串即可。 - 确保本地安装了适配的ODBC驱动(如ODBC Driver 17 for SQL Server),否则可能出现连接失败问题。
内容的提问来源于stack exchange,提问作者Scott
相关产品推荐
相关产品推荐

