iT邦幫忙

0

python to_sql 上傳失敗

  • 分享至 

  • xImage

各位大神們:
小弟近日想將資料上傳到mssql,連線有成功,但是上傳資料時,卻會出現以下畫面,然後資料並未上傳成功,想問問這是甚麼意思? 謝謝
ps: 已確認上傳的資料欄位名稱、格式皆與資料表內容相同。

https://ithelp.ithome.com.tw/upload/images/20220912/20116986nKTvCv8m8a.png

from sqlalchemy import create_engine
import pyodbc
import sqlalchemy
import pandas as pd
engine = sqlalchemy.create_engine('mssql+pyodbc://user:密碼@server:port/db?driver=SQL+Server')
con = engine.connect()  

data = {'abc':['test'],
'df':[45],
'sda':[5],
'zcz':	[1],
'czx':[5],
'dad':[6],
'12':[7],
'saf':[8],
'aaa':[9],
'ccc':[10],
'bb':[11],
'a':[12]
        }
data = pd.DataFrame(data)

data.to_sql(name='資料表', con=con, if_exists='append', index = False)

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
obarisk
iT邦研究生 2 級 ‧ 2022-09-12 21:06:38

建議直接在 con 放 engine.

data.to_sql(name='資料表', con=engine, if_exists='append', index = False)

如果要放 connnection
那要改成

with engine.connect() as con:
    data.to_sql(name='資料表', con=con, if_exists='append', index = False)

或是

with con.begin():
    data.to_sql(name='資料表', con=con, if_exists='append', index = False)

或是在你的程式最後加上

con.commit()
con.close()

pandas.to_sql 是基於 SQLAlchemy 的。

請參考
https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.to_sql.html
https://docs.sqlalchemy.org/en/13/core/connections.html

SQLAlchemy 近期會有比較大的更新,讀的時候注意一下內容是不是已經被棄用。

我要發表回答

立即登入回答