无法使用python插入到数据库中

无法使用python插入到数据库中,python,sql-server,sftp,sql-insert,Python,Sql Server,Sftp,Sql Insert,我使用python 3.8.5时出错 (cursor.execute(“插入dbo.sftpserverlist(文件名,文件大小)值(“+files[0]+”,“+str(size[0])+”) pyodbc.ProgrammingError:('42000','[42000][Microsoft][ODBC SQL Server驱动程序][SQL Server]无法绑定多部分标识符“DidosSupply.zip”。(4104)(SQLExecDirectW)' 当我尝试调用下面的函数并插

我使用python 3.8.5时出错

(cursor.execute(“插入dbo.sftpserverlist(文件名,文件大小)值(“+files[0]+”,“+str(size[0])+”)
pyodbc.ProgrammingError:('42000','[42000][Microsoft][ODBC SQL Server驱动程序][SQL Server]无法绑定多部分标识符“DidosSupply.zip”。(4104)(SQLExecDirectW)'

当我尝试调用下面的函数并插入表
dbo.sftpserverlist

def getfile(sftp):
    FileNames=[]
    FileName = sftp.listdir_attr()   
    for i in FileName:
        FileNames.append(i.filename)

    FileSizes=[]
    FileSize = sftp.listdir_attr()
    for i in FileSize:
        FileSizes.append(i.st_size)

    return FileNames,FileSizes

-----------------------------------------------------------


cursor.execute("INSERT INTO dbo.sftpserverlist(FileName,FileSize) VALUES ("+files[0]+","+str(sizes[0])+")")
conn.commit()

参数化查询,不要注入值,这是一个巨大的安全漏洞

cursor.execute(“插入dbo.sftpserverlist(文件名,文件大小)值(?,)”,文件[0],str(大小[0]))
康涅狄格州提交
cursor.close()
出现错误的原因是您(不安全地)注入的值没有被引用;因此
文件[0]
的值(在本例中,其值为
“DidosSupply.zip”
)被解释为列的名称;不能是列的名称,因为您在
VALUES
子句中,没有
FROM


当然,仅仅将引号括在值周围并不是解决方案,因为引号可以转义。

无论如何,我不是Python专家,但我认为这是老派的做法(插入)。我最近偶然发现了一种超级简单、可扩展且可控的方法,可以将数据从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)
dataframe是非常不言自明的


x=您的表希望在SQLServer中使用。< /P>谢谢您这么做!现在!我也尝试添加修改后的日期作为一个新的列。