使用Python怎么实现异步操作MySQL

这篇文章给大家介绍使用Python怎么实现异步操作MySQL,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

安装aiomysql

使用Python怎么实现异步操作MySQL

依赖

  • Python3.4+

  • asyncio

  • PyMySQL

安装

pipinstallaiomysql

应用

基本的异步连接connection

importasyncio
fromaiomysqlimportcreate_pool
loop=asyncio.get_event_loop()
asyncdefgo():
asyncwithcreate_pool(host='127.0.0.1',port=3306,
user='root',password='',
db='mysql',loop=loop)aspool:
asyncwithpool.get()asconn:
asyncwithconn.cursor()ascur:
awaitcur.execute("SELECT42;")
value=awaitcur.fetchone()
print(value)
loop.run_until_complete(go())

异步的连接池 pool

importasyncio
importaiomysql
asyncdeftest_example(loop):
pool=awaitaiomysql.create_pool(host='127.0.0.1',port=3306,
user='root',password='',
db='mysql',loop=loop)
asyncwithpool.acquire()asconn:
asyncwithconn.cursor()ascur:
awaitcur.execute("SELECT42;")
print(cur.description)
(r,)=awaitcur.fetchone()
assertr==42
pool.close()
awaitpool.wait_closed()
loop=asyncio.get_event_loop()
loop.run_until_complete(test_example(loop))

对象关系映射SQLAlchemy - Object Relationship Mapping

可以随意定义表结构,轻松调用查询、插入等操作方法。

importasyncio
importsqlalchemyassa
fromaiomysql.saimportcreate_engine
metadata=sa.MetaData()
tbl=sa.Table('tbl',metadata,
sa.Column('id',sa.Integer,primary_key=True),
sa.Column('val',sa.String(255)))
asyncdefgo(loop):
engine=awaitcreate_engine(user='root',db='test_pymysql',
host='127.0.0.1',password='',loop=loop)
asyncwithengine.acquire()asconn:
awaitconn.execute(tbl.insert().values(val='abc'))
awaitconn.execute(tbl.insert().values(val='xyz'))
asyncforrowinconn.execute(tbl.select()):
print(row.id,row.val)
engine.close()
awaitengine.wait_closed()
loop=asyncio.get_event_loop()
loop.run_until_complete(go(loop))

关于使用Python怎么实现异步操作MySQL就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

发布于 2021-04-15 01:56:05
收藏
分享
海报
0 条评论
176
上一篇:怎么在JavaScript中使用工厂函数与构造函数 下一篇:如何使用Java合成wav文件
目录

    推荐阅读

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码