Python异步操作MySQL示例【使用aiomysql】


Posted in Python onMay 16, 2019

本文实例讲述了Python异步操作MySQL。分享给大家供大家参考,具体如下:

安装aiomysql

依赖

  • Python3.4+
  • asyncio
  • PyMySQL

安装

pip install aiomysql

应用

基本的异步连接connection

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

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

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

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程序设计有所帮助。

Python 相关文章推荐
Python实现从URL地址提取文件名的方法
May 15 Python
Pycharm学习教程(6) Pycharm作为Vim编辑器使用
May 03 Python
Python实现查找匹配项作处理后再替换回去的方法
Jun 10 Python
matplotlib subplots 调整子图间矩的实例
May 25 Python
python文件拆分与重组实例
Dec 10 Python
python 对类的成员函数开启线程的方法
Jan 22 Python
Flask框架钩子函数功能与用法分析
Aug 02 Python
在pytorch中为Module和Tensor指定GPU的例子
Aug 19 Python
详解Django-channels 实现WebSocket实例
Aug 22 Python
Windows10下 python3.7 安装 facenet的教程
Sep 10 Python
python opencv实现gif图片分解的示例代码
Dec 13 Python
Python学习之包与模块详解
Mar 19 Python
Django 表单模型选择框如何使用分组
May 16 #Python
详解pandas如何去掉、过滤数据集中的某些值或者某些行?
May 15 #Python
详解Python列表赋值复制深拷贝及5种浅拷贝
May 15 #Python
Python 20行简单实现有道在线翻译的详解
May 15 #Python
Python中的字符串切片(截取字符串)的详解
May 15 #Python
python3 property装饰器实现原理与用法示例
May 15 #Python
详解Python下载图片并保存本地的两种方式
May 15 #Python
You might like
写出高质量的PHP程序
2012/02/04 PHP
PHP截断标题且兼容utf8和gb2312编码
2013/09/22 PHP
laravel安装zend opcache加速器教程
2015/03/02 PHP
php动态绑定变量的用法
2015/06/16 PHP
深入理解PHP变量的值类型和引用类型
2015/10/21 PHP
Javascript控制页面链接在新窗口打开具体方法
2013/08/16 Javascript
使用javascript为网页增加夜间模式
2014/01/26 Javascript
表单序列化与jq中的serialize使用示例
2014/02/21 Javascript
JS防止网页被嵌入iframe框架的方法分析
2016/09/13 Javascript
Node.js批量给图片加水印的方法
2016/11/15 Javascript
JavaScript数据结构之数组的表示方法示例
2017/04/12 Javascript
vue项目中用cdn优化的方法
2018/01/03 Javascript
如何用input标签和jquery实现多图片的上传和回显功能
2018/05/16 jQuery
详解微信小程序的 request 封装示例
2018/08/21 Javascript
解决webpack dev-server不能匹配post请求的问题
2018/08/24 Javascript
Node.js开发之套接字(socket)编程入门示例
2019/11/05 Javascript
vscode 插件开发 + vue的操作方法
2020/06/05 Javascript
在Vue中使用antv的示例代码
2020/06/29 Javascript
nodejs使用Sequelize框架操作数据库的实现
2020/10/21 NodeJs
js删除指定位置超链接中含有百度与360的标题
2021/01/06 Javascript
[36:37]2014 DOTA2华西杯精英邀请赛5 24 VG VS iG
2014/05/25 DOTA
[42:20]Secret vs Liquid 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
python中使用pyhook实现键盘监控的例子
2014/07/18 Python
python列出目录下指定文件与子目录的方法
2015/07/03 Python
python多线程实现TCP服务端
2019/09/03 Python
python文件操作的简单方法总结
2019/11/07 Python
WebSphere面试题:在WebSphere里面如何部署一个应用
2015/08/02 面试题
信息专业学生学习的自我评价
2014/02/17 职场文书
幼儿园儿童节活动主持词+串词大全
2014/03/21 职场文书
投资意向书范本
2014/04/01 职场文书
红色故事演讲稿
2014/05/22 职场文书
学校联谊协议书
2014/09/16 职场文书
爱情保证书
2015/01/17 职场文书
2016年情人节广告语
2016/01/28 职场文书
Python中使用subprocess库创建附加进程
2021/05/11 Python
SQL实现LeetCode(176.第二高薪水)
2021/08/04 MySQL