我有一个用户名,我必须在很多(最多约25个)表中进行更改.(是的,我知道.)原子事务似乎是这种事情的方法.但是,我不知道如何用pyodbc做到这一点.我以前见过关于原子事务的各种教程,但从未使用它们.
设置:Windows平台,Python 2.6,pyodbc,Microsoft SQL 2005.我已经将pyodbc用于单个SQL语句,但没有使用复合语句或事务.
SQL的最佳实践似乎表明创建存储过程非常适合这种情况.我对执行存储过程的担心如下,按重要性递增:1)我从未编写过存储过程.2)我听说pyodbc还没有返回存储过程的结果.3)这绝对不是我的数据库.它是供应商提供的,供应商更新的,等等.
那么,最好的方法是什么?
rob*_*rob 13
通过它的文档,pyodbc支持事务,但只有odbc驱动程序支持它.此外,由于pyodbc符合PEP 249,因此仅在手动提交时才存储数据.
这意味着您必须明确地commit()进行交易或rollback()整个交易.
请注意,pyodbc还支持自动提交功能,在这种情况下,您不能拥有任何事务.
默认情况下,自动提交已关闭,但您的代码库可能已将其设置为已启用.您应该在执行连接时检查连接
cnxn = pyodbc.connect(cstring, autocommit=True)
Run Code Online (Sandbox Code Playgroud)
或者,您也可以使用显式关闭自动提交模式
cnxn.autocommit = False
Run Code Online (Sandbox Code Playgroud)
但这可能会对您的系统产生很大影响.
注意:您可以在其wiki上获得有关pyodbc自动提交模式的更多信息
| 归档时间: |
|
| 查看次数: |
11957 次 |
| 最近记录: |