[英]Python: Write Pandas Dataframe to MSSQL --> Database Error
我有一個大約20k行和20列的pandas數據幀。 我想將它寫入MSSQL中的表。
我已成功建立連接:
connection = pypyodbc.connect('Driver={SQL Server};'
'Server=XXX;'
'Database=line;'
'uid=XXX;'
'pwd=XXX')
cursor = connection.cursor()
我正在嘗試使用以下代碼將我的pandas數據幀寫入MSSQL服務器:
df_EVENT5_16.to_sql('MODREPORT', connection, if_exists = 'replace')
但是我收到以下錯誤:
DatabaseError:sql上的執行失敗'SELECT name FROM sqlite_master WHERE type ='table'AND name =?;':('42S02',“[42S02] [Microsoft] [ODBC SQL Server驅動程序] [SQL Server]無效的對象名稱' SQLITE_MASTER”。“)
現代Pandas版本期望SQLAlchemy engine
作為連接,因此使用SQLAlchemy:
from sqlalchemy import create_engine
con = create_engine('mssql+pyodbc://username:password@myhost:port/databasename?driver=SQL+Server+Native+Client+10.0')
然后:
df_EVENT5_16.to_sql('MODREPORT', con, if_exists='replace')
con :SQLAlchemy引擎或DBAPI2連接(傳統模式)
使用SQLAlchemy可以使用該庫支持的任何數據庫。
如果是DBAPI2對象,則僅支持sqlite3。
無需使用pyodbc連接MSSQL,SQL Alchemy將為您做到這一點。 我們也可以直接將數據框插入數據庫,而無需使用to_sql()方法迭代數據框。 這是適合我的代碼 -
# To insert data frame into MS SQL database without iterate the data-frame
import pandas as pd
from sqlalchemy import create_engine, MetaData, Table, select
from six.moves import urllib
params = urllib.parse.quote_plus("DRIVER={SQL
Server};SERVER=serverName;DATABASE=dbName;UID=UserName;PWD=password")
engine = sqlalchemy.create_engine("mssql+pyodbc:///?odbc_connect=%s" % params)
engine.connect()
# suppose df is the data-frame that we want to insert in database
df.to_sql(name='table_name',con=engine, index=False, if_exists='append')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.