动态查询错误不适用于cursor.execute

时间:2019-07-13 04:06:08

标签: python sql-server cursor dynamic-sql

我使用cursor.execute语句遇到以下错误。

  

ProgrammingError :(“ 42000”,“ [42000] [Microsoft] [ODBC SQL Server驱动程序] [SQL Server]','附近的语法不正确。(102)(SQLExecDirectW)“)

但是,如果我复制并执行print语句中生成的SQL,它就可以工作。

qry = "INSERT INTO A([E])  VALUES(?) " ,  (dict_list[i].get('E'))

这是可行的:

cursor.execute("INSERT INTO A([E])  VALUES(?) " ,  (dict_list[i].get('E')))

出错:cursor.execute(qry)

请帮助。

我认为它与动态SQL有关,但是我无法弄清楚代码是如何执行的。

inserttable = 'INSERT INTO A('
valuestable = ''
values = ' VALUES('

for key in keys:
    print(key)
    if key == 'E':
#       print(key)
        inserttable = inserttable + '[' + key + '],'
        valuestable = valuestable + ' dict_list[i].get(' + "'" + key + "'" + '),'
        values = values +  '?,'

#print(inserttable)
#print(valuestable)

qry = r'"""' + inserttable[:-1] + ') ' + values[:-1] + ') ;""" , ('''  + valuestable[:-1] + ')'
qry = qry.replace('\n', ' ').replace('\r', '')

print(qry)

cursor.execute(qry)
  

ProgrammingError :(“ 42000”,“ [42000] [Microsoft] [ODBC SQL Server驱动程序] [SQL Server]','附近的语法不正确。(102)(SQLExecDirectW)“)

0 个答案:

没有答案