tornado异步操作数据库-mysql

import json

from tornado import web, ioloop
import aiomysql

settings = {
    "debug" : True,
    "mysql":{
        "host": "127.0.0.1",
        "port": 3306,
        "user": "root",
        "password": "123456",
        "db": "test",
    },
}

class Home(web.RequestHandler):
    def prepare(self):
        # 读取数据库连接配置
        self.db = self.settings["mysql"]
        print(self.db)
        self.json_argument = {}
        if self.request.headers.get("Content-Type", "").lower() == "application/json":
            self.json_argument = json.loads(self.request.body)

    async def get(self):
        pool = await aiomysql.create_pool(
                                    host=self.db["host"],
                                    port=self.db["port"],
                                    user=self.db["user"],
                                    password=self.db["password"],
                                    db=self.db["db"],
                                    charset="utf8",
            )
        print(pool)
        async with pool.acquire() as conn:
            async with conn.cursor() as cur:
                await cur.execute("SELECT * from user")
                # print(cur.description)
                data = await cur.fetchall()
                print(data)
        pool.close()
        await pool.wait_closed()
        self.write("ok")


def make_app():
    return web.Application(handlers=[
        (r"/", Home)],
    **settings,
    )

if __name__ == '__main__':
    app = make_app()
    app.listen(8888)
    ioloop.IOLoop.current().start()
posted @ 2025-10-09 22:30  陈绪水  阅读(5)  评论(0)    收藏  举报