python - SQL 链接到 Access 数据库错误

标签 python sql ms-access pyqt4 pyodbc

我在通过 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/

相关文章:

python - 从数据框python中的特定位置删除具有缺失值的行

mysql - 使用 Week No 在 MySql 中获取一周的第一天

sql - MS Access 查询问题?

sql - postgresql - 如何在函数中将参数作为表发送?

mysql - 使用 JOIN 查询速度慢

VBA 不为空

html - RegExp 将一个 html 标签替换为另一个,但有一些异常(exception)

python - 为什么\w+ 匹配尾随的换行符?

python - Pandas 中的 If-else 条件赋值

python:如何通过添加int生成char