跳转到主要内容

psycopg2与事务的集成

项目描述

psycopg2与事务的集成

本软件包提供了psycopg2和transaction包之间的两阶段提交集成。

示例用法

>>> import psycopg2, psycopg2transaction, transaction

>>> conn = psycopg2.connect(mydsn)
>>> trans = transaction.get()
>>> psycopg2transaction.join(conn, trans)

>>> ... do things with the psycopg2 connection

>>> transaction.commit()

这只是一个示例。连接可能来自池或其他方式已经存在,只要它处于可以开始分布式事务的状态。

同样,事务可能来自如上所示的线程局部事务管理器,或者来自应用程序管理的事务管理器。

示例中的关键行是

>>> psycopg2transaction.join(conn, trans)

通过调用事务的commit方法提交连接中的工作,通常是通过调用事务管理器的commit,如上所示。

如果您使用线程局部事务管理器(如示例中所示),则可以省略join的transaction参数

>>> psycopg2transaction.join(conn)

连接管理

提供有限的连接管理

>>> dsn = 'dbname=test'
>>> conn = psycopg2transaction.join(dsn)
...
>>> conn = psycopg2transaction.join(dsn)
...
>>> transaction.commit()

如果您传递连接字符串而不是连接到join,则会为您打开一个连接,并在提交事务时关闭它。如果多次使用相同的连接字符串调用join,则使用并返回相同的连接。

使用Postgres通知

您不能在已经使用NOTIFY(或LISTEN或UNLISTEN)的PostgreSQL事务中使用两阶段提交。您可以通过传递一个带有通知名称或一系列字符串通知名称的notify参数来在事务提交后、管理连接关闭前使用NOTIFY,从而触发NOTIFY的使用。这些字符串可以是简单的名称,也可以是后面跟有逗号和字符串数据的名称,正如在notify表达式中跟随NOTIFY那样。

>>> conn = psycopg2transaction.join(dsn, notify='myjobs')

变更

0.1.1 (2017-03-18)

  • 包元数据。

0.1.0 (2017-03-18)

初始发布

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源代码分发

psycopg2transaction-0.1.1.tar.gz (4.7 kB 查看哈希值)

上传时间 源代码

由以下组织支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面