gpt4 book ai didi

python - pyodbc问题下的更新声明

转载 作者:行者123 更新时间:2023-12-03 01:15:30 25 4
gpt4 key购买 nike

我目前正在用 python 开发一个与多个数据库交互的程序。我正在使用 pyodbc 来连接并执行查询。其中一个数据库是 azure 数据库。我注意到有时发送的数据没有在数据库中更新,尽管程序运行成功并且没有抛出错误。我是否应该遵循任何做法来确保不会发生这种情况,或者这与我的代码或数据库连接问题有关?我是初学者。非常感谢大家的帮助,谢谢!

.commit() 行是否应该在每次 sql 运行后运行?

程序应该根据条件更新数据库中的一行数据,这个特定的查询有时不会生效,但没有抛出错误。之后我还执行了多个查询,接下来的查询没有发现问题。执行成功。

该查询是一个简单的查询

UPDATE DraftVReg SET VRStatus = 'Potential Duplicate Found' WHERE RowID = ?

最佳答案

我尝试重现您的场景,并能够使用 Pyodbc 模块更新 Azure SQL DB 中的 SQL 行。

是的,很有必要使用

conn.commit 

以编程方式在 Azure SQL DB 中执行更新或插入等操作后,在数据库中提交更改。

1) 使用 Select 语句获取数据。

在尝试 UPDATE 语句之前,我能够使用 pyodbc 代码中的 Select * from ‘Tablename’ 查询成功获取表的数据。

import pyodbc
conn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};''SERVER=tcp:sqlservernamesql.database.windows.net,1433;''DATABASE=databasename; UID=siliconuser;PWD=Password;')
#conn.commit()
cursor = conn.cursor()
cursor.execute('Select * FROM StudentReviews')
#conn.commit()
for i in cursor:
print(i)
cursor.close()
conn.close()

结果:-

enter image description here

2) 更新行需要 conn.commit()

代码:-

import pyodbc
conn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};''SERVER=tcp:siliconserversql.database.windows.net,1433;''DATABASE=silicondb; UID=userid; PWD=Password;')
cursor = conn.cursor()
#cursor.execute('Select * FROM StudentReviews')
cursor.execute("UPDATE StudentReviews SET ReviewTime = ('7') WHERE ReviewText = ('SQL DB')")
conn.commit()
cursor.close()
conn.close()

结果:-

更新语句已成功执行,并且表行已在 Azure SQL 中更新,请参阅以下内容:-

enter image description here

3) 使用 autocommit=true

感谢@Gord thompson的评论和建议!

代码:-

import pyodbc
conn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};''SERVER=tcp:siliconserversql.database.windows.net,1433;''DATABASE=silicondb; UID=username; PWD=Password;', autocommit=True)
#conn.commit()
cursor = conn.cursor()
cursor.execute("UPDATE StudentReviews SET ReviewTime = ('8') WHERE ReviewText = ('SQL DB')")
cursor.close()
conn.close()

结果:- 使用 autocommit=true,您无需在每次更新 SQL DB 时添加 conn.commit。

enter image description here

关于python - pyodbc问题下的更新声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75055533/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com