Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python pyodbc插入查询SQL server的格式_Python_Sql Server_Pyodbc - Fatal编程技术网

Python pyodbc插入查询SQL server的格式

Python pyodbc插入查询SQL server的格式,python,sql-server,pyodbc,Python,Sql Server,Pyodbc,在过去的一周里,我遇到了一个问题。我在网上找不到针对这种特定情况的任何东西(或者至少我没有搜索正确的东西),但肯定有人以前做过这样的事情。我在每个周期生成一个新表(ID/key列递增,数据有3列),因此表名会更改,然后放入一些数据(所有整数)。导致错误的行是: cursor.execute(''' INSERT INTO ? (column1, column2, column3) VALUES (?, ?, ?) ''' , tablename, rowData[0], rowData[1],

在过去的一周里,我遇到了一个问题。我在网上找不到针对这种特定情况的任何东西(或者至少我没有搜索正确的东西),但肯定有人以前做过这样的事情。我在每个周期生成一个新表(ID/key列递增,数据有3列),因此表名会更改,然后放入一些数据(所有整数)。导致错误的行是:

cursor.execute(''' INSERT INTO ? (column1, column2, column3) VALUES (?, ?, ?) ''' , tablename, rowData[0], rowData[1], rowData[2])
我得到的错误是:

('42000'、'[42000][Microsoft][ODBC SQL Server Driver][SQL Server]必须声明表变量“@P1”。(1087)(SQLExecDirectW);[42000][Microsoft][ODBC SQL Server Driver][SQL Server]语句无法准备。(8180)

我以前尝试过使用常用的python字符串格式,并使用了字典
''插入到%(表)的值%(列表0)i、%(列表1)i、%(列表2)i''%{“表”:表名,“列表0”:列表[0],“列表1”:列表[1],“列表2”:列表[2]})
这两种格式的一些变化也导致了错误


任何帮助都将不胜感激。

您认为应该使用参数化查询是正确的,但查询参数只能用于插入列值,而不能用于插入列/表名。因此,您需要混合使用动态SQL和查询参数化:

sql=“插入[%s](第1列、第2列、第3列)值(?、、?)%tablename
cursor.execute(sql、rowData[0]、rowData[1]、rowData[2])

我明白了,如果使用proceduresAh,会更容易。非常感谢你。这与我尝试过的一种变体非常接近