Python异步操作MySQL示例【使用aiomysql】
时间:2022-04-02 10:36 作者:admin
本文实例讲述了python/' target='_blank'>python异步操作mysql/' target='_blank'>mysql。分享给大家供大家参考,具体如下:
安装aioMySQL
依赖
Python3.4+ asyncio PyMySQL
安装
pip install aiomysql
应用
基本的异步连接connection
import asynciofrom aiomysql import create_poolloop = asyncio.get_event_loop()async def go(): async with create_pool(host='127.0.0.1', port=3306, user='root', password='', db='mysql', loop=loop) as pool: async with pool.get() as conn: async with conn.cursor() as cur: await cur.execute("SELECT 42;") value = await cur.fetchone() print(value)loop.run_until_complete(go())
异步的连接池 pool
import asyncioimport aiomysqlasync def test_example(loop): pool = await aiomysql.create_pool(host='127.0.0.1', port=3306, user='root', password='', db='mysql', loop=loop) async with pool.acquire() as conn: async with conn.cursor() as cur: await cur.execute("SELECT 42;") print(cur.description) (r,) = await cur.fetchone() assert r == 42 pool.close() await pool.wait_closed()loop = asyncio.get_event_loop()loop.run_until_complete(test_example(loop))
对象关系映射SQLAlchemy - Object Relationship Mapping
可以随意定义表结构,轻松调用查询、插入等操作方法。
import asyncioimport sqlalchemy as safrom aiomysql.sa import create_enginemetadata = sa.MetaData()tbl = sa.Table('tbl', metadata, sa.Column('id', sa.Integer, primary_key=True), sa.Column('val', sa.String(255)))async def go(loop): engine = await create_engine(user='root', db='test_pymysql', host='127.0.0.1', password='', loop=loop) async with engine.acquire() as conn: await conn.execute(tbl.insert().values(val='abc')) await conn.execute(tbl.insert().values(val='xyz')) async for row in conn.execute(tbl.select()): print(row.id, row.val) engine.close() await engine.wait_closed()loop = asyncio.get_event_loop()loop.run_until_complete(go(loop))
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python常见数据库操作技巧汇总》、《Python数学运算技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》
希望本文所述对大家Python程序设计有所帮助。
(责任编辑:admin)