4

トランザクションをサポートするために Tornado で使用できる MySQL 用の非同期ドライバー/モジュールはありますか? MySQL をデータベースとして Tornado アプリを作成しています。私はグーグルで見つけました https://github.com/woshifyz/tornado-mysql

https://github.com/hybridlogic/txMySQL

ただし、トランザクションはサポートされていません。

4

1 に答える 1

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 の DB ドライバーはプロジェクトから除外されました。torndbという名前の別のライブラリとして利用できます (ここから入手できます)。
  2. TorMySQLTornado-MySQLAsyncTorndbなどのプロジェクトが興味深いかもしれません。
于 2013-10-13T07:29:35.717 に答える