2 回答

TA貢獻1817條經驗 獲得超14個贊
參數化您的查詢,不要注入值,這是一個巨大的安全缺陷。
cursor.execute("INSERT INTO dbo.sftpserverlist(FileName,FileSize) VALUES (?,?)",files[0],str(sizes[0]))
conn.commit()
cursor.close()
您收到錯誤的原因是因為您(不安全地)注入的值沒有被引用;因此 的值files[0](在本例中具有值"DidosSupply.zip")被解釋為列的名稱;它不可能是這樣,因為你在一個VALUES沒有 的子句中FROM。
當然,僅僅在值周圍加上引號并不是解決方案,因為引號可以被轉義。

TA貢獻1993條經驗 獲得超6個贊
無論如何,我都不是Python專家,但我認為這是老式的做法(INSERT INTO)。我最近偶然發現了一種超級簡單、可擴展且可控的方法,可以將數據從 Python 推送到 SQL Server。嘗試示例代碼,如果您有其他問題,請回復。
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)
數據框是非常不言自明的。
x = 您希望表在 SQL Server 中的名稱。
添加回答
舉報