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

2024-09-28 21:55:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道是否可以使用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

我想尽一切办法都试过了。我只是误解了帮助文档吗?在

脚本成功运行,但新分配的值似乎从未提交。我甚至试着把“print str(record[z])放在record[z]=val行之后,看看表中的字段是否有新值,新值是否会正常打印……但是如果在脚本完成后签入表,旧值仍然在表字段中。在

非常感谢您对此的深入了解…我希望这能像在msaccess数据库中使用VBA一样工作,您可以使用ADO记录集循环访问表中的记录,并从变量为字段赋值。在

谢谢, 汤姆


Tags: 文档脚本数据库access记录valrecordcursor
1条回答
网友
1楼 · 发布于 2024-09-28 21:55:09

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

相关问题 更多 >