如何从MYSQL和/或MySQLdb连接中检索MYSQL*本机连接?

2024-09-27 23:26:28 发布

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

XTA(XA事务API,http://www.tiian.org/lixa/XTA.html)是在LIXA项目中开发的一个新API,它支持FaaS(Function as a Service)和面向微服务的多语言应用程序上下文中的两阶段提交事务

API已经支持C语言和C++语言;它的目标是支持更多,最低限度是Python、PHP和Java。 我目前正在用PostgreSQL和MySQL支持Python,这个邮件线程与Python/MySQL相关。

XTA是用C语言实现的,xtaforpython是用SWIG生成的:我想对所有提供从MySQL C API派生的驱动程序的语言重复这种方法

现在请求帮助:XTA需要登记所有的资源管理器(这里是MySQL)来使用2阶段提交来管理它们,基本上它需要一个指针(MySQL*),该指针必须传递给MysqlXaResource构造函数http://www.tiian.org/lixa/manuals/xta/CPP/classxta_1_1MysqlXaResource.html来创建一个与已经打开的MySQL连接关联的XTA对象

下面是Python示例程序(https://github.com/tiian/lixa/blob/master/doc/examples/xta/python/example_xta_sa21.py)的基本步骤:

# initialize XTA environment
Xta_Init()

# create a new MySQL connection
# Note: using _mysql or MySQLdb functions
rm2 = MySQLdb.connect("localhost", "lixa", "", "lixa")
# alternatively, usign _mysql 
rm2 = _mysql.connect("localhost", "lixa", "", "lixa")

# create a new XTA Transaction Manager object
tm = TransactionManager()

# create an XA resource for MySQL
#
# how to retrieve MYSQL * from rm2 ?
xar2 = MysqlXaResource(rm2.???, "PostgreSQL", "dbname=testdb")

查看最后一条语句,堆栈是:

  • XTA本机C库要求“MYSQL*”注册连接处理程序
  • < > XTA C++包装器期望“MySQL *”作为构造对象的第一个参数
  • XTA Python(SWIG-generated)包装器需要一个“SWIG-generated”MYSQL*指针(可以通过“typemap”指令(https://github.com/tiian/lixa/blob/master/src/xta/python/xta.i)用另一个众所周知的类型来更改)
  • _connect()和MySQLdb.connect()并没有为我提供与mysql*等价的东西,至少在我看来是这样

您有没有关于检索类似于用MYSQL*本机连接初始化的PyCapsule之类的东西的提示

事先谢谢你的帮助

谨致问候

Ch.F


Tags: api语言connectcreatemysqlswigmysqldb指针

热门问题