Tornado Web サーバーを使用してサーバー アプリケーションを作成しています。tornado.database
アプリケーションは、モジュールを介して MySQL データベースと連携します。DBにはテーブルがあります
CREATE TABLE SampleTable (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
txt VARCHAR(256)
);
特定のクエリに対する反応として、このテーブルに新しいレコードを書き込み、id
新しく作成されたレコードをクライアントに返す必要があります。したがって、サーバーコードには次の行があります。
class Application(tornado.web.Application):
def __init__(self):
handlers = [(r'/somequery', queryHandler)]
tornado.web.Application.__init__(self, handlers)
self.db = tornado.database.Connection(
host="localhost", database="sampledb",
user="sampleuser", password="samplepassword")
およびハンドラー:
class queryHandler(tornado.web.RequestHandler):
def post(self):
lastid = self.db.execute_lastrowid("INSERT INTO \
SampleTable (txt) \
VALUES('some text');")
print lastid
私の知る限り、 Pythonモジュールtornado.database
の比較的単純なラッパーMySQLdb
であり、接続ごとにのみ最後の行IDの正しい動作を保証します。私の場合、アプリケーション全体に対して 1 つの接続しかありません。
それで、複数の同時クライアントクエリの場合、/somequery
最後の行IDがクライアント間で混乱したり、竜巻がそれを処理したりする可能性はありますか?
のソースを調べてtornado.database
みましたが、質問に関して何も見つかりませんでした。
これがうまくいかない場合、どうすればよいですか?