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条经验 获得超5个赞
无论如何,我都不是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 中的名称。
添加回答
举报