2 回答

TA貢獻(xiàn)1817條經(jīng)驗(yàn) 獲得超14個(gè)贊
參數(shù)化您的查詢,不要注入值,這是一個(gè)巨大的安全缺陷。
cursor.execute("INSERT INTO dbo.sftpserverlist(FileName,FileSize) VALUES (?,?)",files[0],str(sizes[0]))
conn.commit()
cursor.close()
您收到錯(cuò)誤的原因是因?yàn)槟ú话踩兀┳⑷氲闹禌]有被引用;因此 的值files[0](在本例中具有值"DidosSupply.zip")被解釋為列的名稱;它不可能是這樣,因?yàn)槟阍谝粋€(gè)VALUES沒有 的子句中FROM。
當(dāng)然,僅僅在值周圍加上引號(hào)并不是解決方案,因?yàn)橐?hào)可以被轉(zhuǎn)義。

TA貢獻(xiàn)1993條經(jīng)驗(yàn) 獲得超6個(gè)贊
無論如何,我都不是Python專家,但我認(rèn)為這是老式的做法(INSERT INTO)。我最近偶然發(fā)現(xiàn)了一種超級(jí)簡單、可擴(kuò)展且可控的方法,可以將數(shù)據(jù)從 Python 推送到 SQL Server。嘗試示例代碼,如果您有其他問題,請(qǐng)回復(fù)。
import pyodbc
import pandas as pd
engine = "mssql+pyodbc://your_server_name/your_database_name?driver=SQL Server Native Client 11.0?trusted_connection=yes"
... dataframe here...
dataframe.to_sql(x, engine, if_exists='append', index=True)
數(shù)據(jù)框是非常不言自明的。
x = 您希望表在 SQL Server 中的名稱。
添加回答
舉報(bào)