Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.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和MS Access的SQL insert语句错误07002_Python_Pyodbc - Fatal编程技术网

Python 使用pyodbc和MS Access的SQL insert语句错误07002

Python 使用pyodbc和MS Access的SQL insert语句错误07002,python,pyodbc,Python,Pyodbc,我被这个错误迷住了 pyodbc.Error: ('07002', '[07002] [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1. (-3010) (SQLExecDirectW)') 使用下面的代码会产生错误 conn = pyodbc.connect(r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};UID=admin;UserComm

我被这个错误迷住了

pyodbc.Error: ('07002', '[07002] [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1. (-3010) (SQLExecDirectW)')
使用下面的代码会产生错误

conn = pyodbc.connect(r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};UID=admin;UserCommitSync=Yes;Threads=3;SafeTransactions=0;PageTimeout=5;MaxScanRows=8;MaxBufferSize=2048;{FIL=MS Access};DriverId=25;DefaultDir=C:\Users\James\Documents;DBQ=C:\Users\James\Documents\Database1.accdb;')
cursor = conn.cursor()

      cursor.execute("""INSERT INTO Loan_vehicle_data (Loan_make , Loan_model , Loan_rego) values (test , 
   test , test)""")
我尝试了
INSERT
语句的不同变体,但仍然无法使其正常工作。 有人能为我澄清一下写
INSERT
语句的正确方法吗。我已经读到您需要使用
cursor.commit()
,但这在这个库中似乎并不明显,所以我假设这是多余的?我还读到,您需要在语句的开头和结尾使用三个
”,但根据我在文档中读到的内容,似乎不是这样

这是完整的回溯

Exception in Tkinter callback

    Traceback (most recent call last):
      File "C:\Program Files\Python39\lib\tkinter\__init__.py", line 1885, in __call__
        return self.func(*args)
      File "<ipython-input-90-00d386f93670>", line 92, in add_new_loancar_to_DB
        cursor.execute("""INSERT INTO [Loan_vehicle_data](Loan_make , Loan_model , Loan_rego) values (test , test , test)""")
    pyodbc.Error: ('07002', '[07002] [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1. (-3010) (SQLExecDirectW)')
Tkinter回调中出现异常 回溯(最近一次呼叫最后一次): 文件“C:\Program Files\Python39\lib\tkinter\\ uuuuu init\uuuuu.py”,第1885行,在调用中__ 返回self.func(*args) 文件“”,第92行,在添加新的\u loancar\u到\u DB中 cursor.execute(““”插入[贷款车辆数据](贷款品牌、贷款模型、贷款注册)值(测试、测试、测试)”) pyodbc。错误:('07002','[07002][Microsoft][ODBC Microsoft Access驱动程序]参数太少。应为1。(-3010)(SQLExecDirectW)) 如果您提交

插入贷款车辆数据(贷款品牌、贷款型号、贷款注册)值(测试、测试、测试)
并且
test
不包含在单引号中,它被解释为列名。当Access SQL遇到列名(或类似名称)时如果它无法识别,则假定它是一个参数占位符。因此得出的结论是,您的查询中有一个名为
test
的参数,但您没有提供任何参数值。如果使用

插入贷款车辆数据(贷款品牌、贷款型号、贷款注册)值(“测试”、“测试”、“测试”)
您也可以这样做:

text\u to\u insert=“测试”
sql=“插入贷款车辆数据(贷款品牌、贷款模型、贷款注册)值(?,?)”
执行(sql、文本到插入、文本到插入、文本到插入)

(是的,您需要将参数值重复三次,因为pyodbc只支持位置-未命名-参数。)

是否尝试将字符串值
“test”
插入三列中的每一列?@GordThompson正确:)