2013-07-30 49 views

回答

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-MySQL,AsyncTorndb
相關問題