本文实例讲述了python异步操作mysql。分享给大家供大家参考,具体如下:
安装aiomysql
依赖
- python3.4+
- asyncio
- pymysql
安装
1
|
pip install aiomysql
|
应用
基本的异步连接connection
1
2
3
4
5
6
7
8
9
10
11
12
13
|
import asyncio
from aiomysql import create_pool
loop = 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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
import asyncio
import aiomysql
async 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
可以随意定义表结构,轻松调用查询、插入等操作方法。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
import asyncio
import sqlalchemy as sa
from aiomysql.sa import create_engine
metadata = 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程序设计有所帮助。
原文链接:https://blog.csdn.net/ydyang1126/article/details/78226701