是否有任何MySQL的异步驱动程序/模块可用于Tornado以支持事务?

时间:2013-07-30 14:26:06

标签: mysql python-2.7 tornado

是否有可用于Tornado的MySQL异步驱动程序/模块来支持事务处理? 我正在用MySQL作为数据库编写Tornado应用程序。我用Google搜索并找到了 https://github.com/woshifyz/tornado-mysql

https://github.com/hybridlogic/txMySQL

但不支持交易。

1 个答案:

答案 0 :(得分:1)

Tornado自己的数据库模块支持交易。

class Application(tornado.web.Application):
    def __init__(self):
        handlers = [
                    (r'/', someHandler),
                   ]

        tornado.web.Application.__init__(self, handlers)

        self.db = tornado.database.Connection(
            host=mysql_host, database=mysql_db,
            user=mysql_user, password=mysql_password)

# ----------------------

class someHandler(tornado.web.RequestHandler):
    def get(self):
        # ...

        try:
            self.application.db.execute('START TRANSACTION')
            row = self.application.db.get("SELECT ...", ...)
            # ...
            self.application.db.execute("INSERT ...", ...)
            self.application.db.execute("COMMIT")
        except Exception, e:
            self.set_status(500)
            return

        # ...

但是,它不支持异步调用。

更新(2015年5月)

该主题的一些更新。

  1. Tonado的数据库驱动程序被排除在项目之外。它可以作为名为 torndb 的单独库提供(可用here)。
  2. 这些项目可能很有用:TorMySQLTornado-MySQLAsyncTorndb