使用Pyodbc向MS Access表写入新行时出现INSERT INTO语法错误
错误原因
你遇到的INSERT语句语法报错,核心原因是Group是Access数据库的保留关键字,直接作为字段名写在SQL语句中会被数据库识别为语法指令,无法正常解析为表字段。
修复方案
修改Write()函数中的INSERT语句,将保留字Group用方括号包裹,修改后的代码如下:
def Write(): if GlobalVars.PM == False: GlobalVars.DueTime = GlobalVars.DueTime + " AM" #在时间字符串末尾拼接AM else: GlobalVars.DueTime = GlobalVars.DueTime + " PM" #在时间字符串末尾拼接PM # 仅需把SQL语句中的Group替换为[Group]即可解决报错 sql = "INSERT INTO ToDo ([Group], TaskName, TaskDesc, DueDate, DueTime) VALUES (?, ?, ?, ?, ?)" val = (GlobalVars.Group, GlobalVars.TaskName, GlobalVars.TaskDesc, GlobalVars.DueDate, GlobalVars.DueTime) cursor.execute(sql, val) cursor.commit()
其他注意事项
你当前未测试的Update()函数也存在两处语法问题,后续开发时可以一并修正:
- 同样需要把
Group字段用方括号包裹 - UPDATE语法格式错误,正确格式应为
UPDATE 表名 SET 字段1=值1, 字段2=值2 WHERE 条件,你当前的SET子句没有写赋值逻辑,后续开发时需要补全对应赋值语句。
内容的提问来源于stack exchange,提问作者BaseballIphone69
相关产品推荐
相关产品推荐

