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みましたが、質問に関して何も見つかりませんでした。
これがうまくいかない場合、どうすればよいですか?