2

我试图弄清楚是否可以使用pyodbc替换 Microsoft Access(.accdb 或 .mdb)数据库中的记录值。我翻阅了文档并注意到它说“可以替换行值”但我无法使其工作。

更具体地说,我正在尝试从 python 变量中替换行值。我试过了:

  • 将连接自动提交设置为“True”

  • 确保这不是数据类型问题

这是我正在执行 SQL 查询的代码片段,使用 fetchone() 仅获取一条记录(我知道使用此脚本查询仅返回一条记录),然后我正在获取字段的现有值(字段位置整数存储在 z 变量中),然后通过从脚本中创建的现有 python 字典访问它来获取我想要写入该字段的新值。

pSQL = "SELECT * FROM %s WHERE %s = '%s'" % (reviewTBL, newID, basinID)

cursor.execute(pSQL)
record = cursor.fetchone()
if record:
    oldVal = record[z]
    val = codeCrosswalk[oldVal]
    record[z] = val

我已经尝试了所有我认为有点无法让它工作的东西。我只是误解了帮助文档吗?

该脚本成功运行,但新分配的值似乎从未提交。我什至尝试将“print str(record[z])this 放在 record[z] = val 行之后,以查看表中的字段是否具有新值,并且新值会像它一样打印......但是如果我在脚本完成后签入表格,旧值仍在表格字段中。

非常感谢对此的任何见解......我希望这会像在 MS Access 数据库中使用 VBA 一样工作,您可以使用 ADO Recordset 循环遍历表中的记录并将值分配给变量中的字段。

谢谢,汤姆

4

1 回答 1

0

pyodbc 文档中的“可以替换行值”是指您可以修改返回的行对象的值,例如在开始使用它们之前执行一些清理或转换。这并不意味着这些更改会自动保存在数据库中。您将不得不为此使用 sql UPDATE 语句。

于 2011-07-11T22:41:31.007 回答