我正在使用Tornado web server编写服务器应用程序。应用程序通过tornado.database
模块与 MySQL 数据库一起工作。在数据库中有一个表
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
据我所知,tornado.database
它是一个相对简单的MySQLdb
python 模块包装器,它只保证每个连接的最后一行 id 的正确工作。就我而言,整个应用程序只有一个连接。
那么,如果有几个并发的客户端查询/somequery
,最后一行 ID 是否可能会在客户端之间出现混乱,或者龙卷风会处理它?
我尝试查看的来源,tornado.database
但没有发现任何关于我的问题的信息。
如果这不能正常工作,该怎么办?