pyodbc无法更新表格。

5

基本上我正在尝试更新位于MS Access数据库中的Table1中的Column1_mbgl字段数据。 该脚本执行时没有出现任何错误,但是在检查表格时没有进行任何更新。 我已经尝试了两个选项,如代码所示,但都没有成功。 第二个选项是直接从MS Access查询生成的SQL代码。 有人可以建议我在代码中缺少什么吗?

#import pypyodbc
import pyodbc

# MS ACCESS DB CONNECTION
pyodbc.lowercase = False
conn = pyodbc.connect(
    r"Driver={Microsoft Access Driver (*.mdb, *.accdb)};" +
    r"Dbq=C:\temp\DB_access.accdb;")

# OPEN CURSOR AND EXECUTE SQL
cur = conn.cursor()

# Option 1 - no error and no update
cur.execute("UPDATE Table1 SET Column1_mbGL = Column2_mbGL-0.3 WHERE ((Column3_name='PZ01') AND (DateTime Between #6/14/2016 14:0:0# AND #6/16/2016 12:0:0#) AND (TYPE='LOG'))");

# Option 2 - no error and no update
#cur.execute("UPDATE Table1 SET Table1.Column1_mbGL = [Table1]![Column2_mbGL]-0.3 WHERE (((Table1.Column3_name)='PZ01') AND ((Table1.DateTime) Between #6/14/2016 14:0:0# And #6/16/2016 12:0:0#) AND ((Table1.TYPE)='LOG'))");

cur.close()
conn.close()

你检查过数据库中是否有满足where条件的记录了吗?另外,值得注意的是,在Python之外也要检查查询是否按预期更新。 - notionquest
是的,相同的查询在MS Access中成功运行并更新了数据,所以对于这个条件是有数据的。 - Curtis
2
你在执行UPDATE查询后忘记了conn.commit() - Gord Thompson
2
@GordThompson,你真是救星,非常感谢! - Curtis
1个回答

9

在执行更新查询之后,您忘记了conn.commit()Python数据库API指定默认情况下连接开启“自动提交”关闭,因此需要显式地进行commit


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接