我在通过 SQL 将一些数据保存到数据库时遇到问题。该代码最初有效:
cnxn = pyodbc.connect('Driver={Microsoft Access Driver (*.mdb, *.accdb)}; Dbq=C:\\Users\\george\\Documents\\Homework\\Computing\\Monkey Studio\DrivingSchoolDatabase.accdb')
cursor = cnxn.cursor()
cursor.execute("insert into Students(Forename,Surname,Address1,Address2,PostCode,Home,Mobile,Email,License,Expiry,Medical,DOB,EyeTest) values (?,?,?,?,?,?,?,?,?,?,?,?,?)",forename,surname,address1,address2,postCode,homePhone,mobilePhone,email,license,expiry,medical,DOB,eyeTest)
cnxn.commit()
QtGui.QMessageBox.about(self, 'Saved','Student data saved')
self.close()
然后,我将两个新字段添加到 access 数据库中,并将它们添加到代码中,这样我就得到了这个(两个新变量是 previous 和 where):
cnxn = pyodbc.connect('Driver={Microsoft Access Driver (*.mdb, *.accdb)}; Dbq=C:\\Users\\george\\Documents\\Homework\\Computing\\Monkey Studio\DrivingSchoolDatabase.accdb')
cursor = cnxn.cursor()
cursor.execute("insert into Students(Forename,Surname,Address1,Address2,PostCode,Home,Mobile,Email,License,Expiry,Medical,DOB,EyeTest,Previous,Where) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)",forename,surname,address1,address2,postCode,homePhone,mobilePhone,email,license,expiry,medical,DOB,eyeTest,previous,where)
cnxn.commit()
QtGui.QMessageBox.about(self, 'Saved','Student data saved')
self.close()
我现在收到此错误:
Traceback (most recent call last):
File "C:\Users\george\Documents\Homework\Computing\Monkey Studio\AddAStudent.py", line 118, in AddCreateStu
cursor.execute("insert into Students(Forename,Surname,Address1,Address2,PostCode,Home,Mobile,Email,License,Expiry,Medical,DOB,EyeTest,Previous,Where) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)",forename,surname,address1,address2,postCode,homePhone,mobilePhone,email,license,expiry,medical,DOB,eyeTest,previous,where)
pyodbc.ProgrammingError: ('42000', '[42000] [Microsoft][ODBC Microsoft Access Driver] Syntax error in INSERT INTO statement. (-3502) (SQLExecDirectW)')
我可能错过了一些简单的东西。
最佳答案
WHERE
是一个 SQL 关键字,这使得它作为字段名称是一个糟糕的选择。如果您无法重命名该字段,请在 INSERT
语句中将其括在方括号中。
... Previous,[Where]) values ...
关于python - SQL 链接到 Access 数据库错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27257426/