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回调函数的使用方法
Jan 23 Python
python实现堆栈与队列的方法
Jan 15 Python
Python中实现常量(Const)功能
Jan 28 Python
python基于xmlrpc实现二进制文件传输的方法
Jun 02 Python
Python中Iterator迭代器的使用杂谈
Jun 20 Python
Python的标准模块包json详解
Mar 13 Python
numpy找出array中的最大值,最小值实例
Apr 03 Python
Python做智能家居温湿度报警系统
Sep 25 Python
django开发post接口简单案例,获取参数值的方法
Dec 11 Python
Python Django Cookie 简单用法解析
Aug 13 Python
基于python实现MQTT发布订阅过程原理解析
Jul 27 Python
Django扫码抽奖平台的配置过程详解
Jan 14 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的ob_start来生成静态页面的方法分析
2011/03/09 PHP
Yii实现复选框批量操作实例代码
2017/03/15 PHP
thinkphp3.2.0 setInc方法 源码全面解析
2018/01/29 PHP
PHP使用标准库spl实现的观察者模式示例
2018/08/04 PHP
JavaScript常用全局属性与方法记录积累
2013/07/03 Javascript
javascript客户端遍历控件与获取父容器对象示例代码
2014/01/06 Javascript
JS实现往下不断流动网页背景的方法
2015/02/27 Javascript
JS正则匹配URL网址的方法(可匹配www,http开头的一切网址)
2017/01/06 Javascript
JavaScript中无法通过div.style.left获取值的解决方法
2017/02/19 Javascript
jQuery时间验证和转换为标准格式的时间格式
2017/03/06 Javascript
基于JavaScript表单脚本(详解)
2017/10/18 Javascript
关于jQuery里prev()的简单操作代码
2017/10/27 jQuery
Postman的下载及安装教程详解
2018/10/16 Javascript
JavaScript变量作用域及内存问题实例分析
2019/06/10 Javascript
Vue路由之JWT身份认证的实现方法
2019/08/26 Javascript
如何在微信小程序中使用骨架屏的步骤
2020/06/12 Javascript
[02:25]DOTA2英雄基础教程 虚空假面
2014/01/02 DOTA
Python中使用语句导入模块或包的机制研究
2015/03/30 Python
详解python字节码
2018/02/07 Python
通过字符串导入 Python 模块的方法详解
2019/10/27 Python
使用python 将图片复制到系统剪贴中
2019/12/13 Python
keras 特征图可视化实例(中间层)
2020/01/24 Python
在python下实现word2vec词向量训练与加载实例
2020/06/09 Python
Python实现Appium端口检测与释放的实现
2020/12/31 Python
html5需遵循的6个设计原则
2016/04/27 HTML / CSS
HTML5中的强制下载属性download使用实例解析
2016/05/12 HTML / CSS
html5 http的轮询和Websocket原理
2018/10/19 HTML / CSS
亚洲最大的眼镜批发商和零售商之一:Glasseslit
2018/10/08 全球购物
财务部岗位职责
2013/11/19 职场文书
单位租房协议书范本
2014/12/04 职场文书
卫生保健工作总结2015
2015/05/18 职场文书
父亲节感言
2015/08/03 职场文书
公司车队管理制度
2015/08/04 职场文书
小学感恩主题班会
2015/08/12 职场文书
小学数学新课改心得体会
2016/01/22 职场文书
python 遍历磁盘目录的三种方法
2021/04/02 Python