无法在python的插入语句中使用参数?

时间:2019-03-20 09:29:03

标签: python-3.x

从“审核”表中获取INS_QUERY值。

 INS_QUERY = ("INSERT INTO sales.dbo.Customer_temp (ID,FIRST_NM,LAST_NM,CITY,COUNTRY,PHONE) VALUES ('%s','%s','%s','%s','%s','%s')" % (d[0],d[1],d[2],d[3],d[4],d[5]))

 cursor = cs.cursor()

 cursor.execute(INS_QUERY)

 cs.commit();

如果我在脚本中对INS_QUERY值进行了硬编码,则可以正常工作,但是如果我从表中获取了相同的值,则会显示以下错误消息。

错误消息:

  

pyodbc.ProgrammingError :(“ 42000”,“ [42000] [Microsoft] [ODBC SQL   服务器驱动程序] [SQL Server]'INSERT INTO附近的语法不正确   sales.dbo.Customer_temp(ID,FIRST_NM,LAST_NM,CITY,COUNTRY,PHONE)   VALUES('%s','%s','%s','%s','%s','%s')'。 (102)(SQLExecDirectW)“)

审核表插入查询:

INSERT INTO DBO.AUDIT_TABLE(INST_QUERY) VALUES ('("INSERT INTO sales.dbo.Customer_temp (ID,FIRST_NM,LAST_NM,CITY,COUNTRY,PHONE) VALUES ("%s","%s","%s","%s","%s","%s")" % (d[0],d[1],d[2],d[3],d[4],d[5]))')

1 个答案:

答案 0 :(得分:1)

您正在使用pyodbc连接器,并且参数语法为,而不是%s
第二个细节是,当参数来自str类型时,不需要使用单引号'?',这将自动为您完成。

您可以尝试这种方法并告诉我它如何为您工作吗?

INS_QUERY = "INSERT INTO sales.dbo.Customer_temp (ID,FIRST_NM,LAST_NM,CITY,COUNTRY,PHONE) VALUES (?, ?, ?, ?, ?, ?)"
cursor = cs.cursor()
cursor.execute(INS_QUERY, (d[0],d[1],d[2],d[3],d[4],d[5]) )
cs.commit();