Python:使用pyodbc并替换行字段值

时间:2011-07-11 20:57:14

标签: python pyodbc

我正在尝试确定是否可以使用pyodbc替换Microsoft Access(.accdb或.mdb)数据库中的记录值。我倾注了文档,并注意到它在哪里说“Row Values Can Be Replaced”,但我无法使其发挥作用。

更具体地说,我正在尝试从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

我已经尝试了一切我认为有点无法让它发挥作用。我只是误解了帮助文档吗?

脚本成功运行,但新分配的值似乎永远不会提交。我甚至尝试在记录[z] = val行之后放置“print str(record [z])”,以查看表中的字段是否具有新值,并且新值将按其工作方式打印...但是如果我在脚本完成后检查表中的旧值仍然在表字段中。

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

感谢, 汤姆

1 个答案:

答案 0 :(得分:0)

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