我目前正在尝试使用pyodbc将数据从.csv插入到Azure SQL Server数据库中。我在堆栈溢出中找到了这个语法的大部分,然而由于某种原因,我总是收到两个不同的错误之一。Python PYDOBC插入带有参数的SQL Server数据库
1)每当我使用下面的代码,我得到一个错误,指出'SQL包含0个参数标记,但提供了7个参数'。
import pyodbc
import csv
cnxn = pyodbc.connect('driver', user='username', password='password', database='database')
cnxn.autocommit = True
cursor = cnxn.cursor()
csvfile = open('CSV File')
csv_data = csv.reader(csvfile)
SQL="insert into table([Col1],[Col2],[Col3],[Col4],[Col5],[Col6],[Col7]) values ('?','?','?','?','?','?','?')"
for row in csv_data:
cursor.execute(SQL, row)
time.sleep(1)
cnxn.commit()
cnxn.close()
2)为了摆脱这个错误,我通过添加'=?'来定义参数标记。到插入语句中的每个列(请参阅下面的代码),然而这会给出以下错误:ProgrammingError:('42000'“[42000] [Microsoft] [ODBC SQL Server驱动程序] [SQL Server]语法附近' =')。
import pyodbc
import csv
cnxn = pyodbc.connect('driver', user='username', password='password', database='database')
cnxn.autocommit = True
cursor = cnxn.cursor()
csvfile = open('CSV File')
csv_data = csv.reader(csvfile)
SQL="insert into table([Col1]=?,[Col2]=?,[Col3]=?,[Col4]=?,[Col5]=?,[Col6]=?,[Col7]=?) values ('?','?','?','?','?','?','?')"
for row in csv_data:
cursor.execute(SQL, row)
time.sleep(1)
cnxn.commit()
cnxn.close()
这是我用,我已经找遍了堆栈溢出,似乎无法找到解决办法的麻烦巡航能力的主要错误。我知道这个错误可能是很琐碎,但是我是新来的Python和将不胜感激的任何建议或帮助。
真棒,那工作的感谢! – ls101