簡體   English   中英

Python:將Pandas Dataframe寫入MSSQL - >數據庫錯誤

[英]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')

來自DataFrame.to_sql()docs

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM