从“审核”表中获取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]))')
答案 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();