pymssql 使用名称创建事务

Posted

技术标签:

【中文标题】pymssql 使用名称创建事务【英文标题】:pymssql create transaction with name 【发布时间】:2015-09-23 11:17:45 【问题描述】:

我正在尝试使用名称创建交易。可能会在稍后回滚。

pid = os.getpid()
cursor.execute("BEGIN TRAN trans0".format(pid))
cursor.execute("ROLLBACK TRAN trans0".format(pid))

当我编写上面的代码时,它会引发以下错误:

pymssql.OperationalError: (6401, 'Cannot roll back trans5713. 
No transaction or savepoint of that name was found.DB-Lib error 
message 20018, severity 16:\nGeneral SQL Server error: 
Check messages from the SQL Server\n')

但是,当我删除名称部分 tran0 时,它不会引发任何错误。

    我应该如何在 pymssql 中创建事务。我了解,当我建立连接时,它属于交易。但是,我希望交易被命名!

【问题讨论】:

您是否尝试过将 connection.autocommit() 设置为 False? 默认为false 是的,我在文档中看到过。由于您的示例很少,我想确保它真的是这样。 【参考方案1】:

您不必通过 SQL 来完成。只需使用 Class Connection 中的函数,即 Connection.rollback() 和 Connection.commit()。

http://pymssql.org/en/stable/ref/pymssql.html#connection-object-methods

【讨论】:

以上是关于pymssql 使用名称创建事务的主要内容,如果未能解决你的问题,请参考以下文章

无法使用带有 Windows 身份验证的 pymssql 进行连接

在 pymssql 中正确传递带有“-”的数据库名称

如何在不更改用户名的情况下绕过 pymssql 中 LOGINREC 的名称太长

如何使用 pymssql 创建多个连接?

pymssql 包不适用于 aws 中的 lambda

如何在未确定数量的参数上使用 LIKE 和 % 和 pymssql?