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中stdout输出不缓存的设置方法
May 29 Python
对Python中的@classmethod用法详解
Apr 21 Python
flask-socketio实现WebSocket的方法
Jul 31 Python
Python实现去除列表中重复元素的方法总结【7种方法】
Feb 16 Python
Python常见数字运算操作实例小结
Mar 22 Python
Python 安装第三方库 pip install 安装慢安装不上的解决办法
Jun 18 Python
Python 生成器,迭代,yield关键字,send()传参给yield语句操作示例
Oct 12 Python
使用OpenCV circle函数图像上画圆的示例代码
Dec 27 Python
tensorflow 查看梯度方式
Feb 04 Python
python 成功引入包但无法正常调用的解决
Mar 09 Python
Python如何使用input函数获取输入
Aug 06 Python
python实现自动清理文件夹旧文件
May 10 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连接oracle数据库的方法(测试成功)
2016/05/26 PHP
编辑浪子版表单验证类
2007/05/12 Javascript
复制本贴标题和地址的js代码
2008/07/01 Javascript
Jquery优化效率 提升性能解决方案
2010/09/06 Javascript
javascript中String类的subString()方法和slice()方法
2011/05/24 Javascript
JQuery1.6 使用方法三
2011/11/23 Javascript
jquery属性选择器not has怎么写 行悬停高亮显示
2013/11/13 Javascript
javascript中验证大写字母、数字和中文
2014/01/15 Javascript
Javascript将JSON日期格式化
2016/08/23 Javascript
原生JS实现网络彩票投注效果
2016/09/25 Javascript
js实现漫天星星效果
2017/01/19 Javascript
利用JS实现scroll自定义滚动效果详解
2017/10/17 Javascript
vue的状态管理模式vuex
2017/11/30 Javascript
使用Vue制作图片轮播组件思路详解
2018/03/21 Javascript
vue-cli2打包前和打包后的css前缀不一致的问题解决
2018/08/24 Javascript
详解如何快速配置webpack多入口脚手架
2018/12/28 Javascript
js如何获取访问IP、地区、当前操作浏览器
2019/07/23 Javascript
node.js事件轮询机制原理知识点
2019/12/22 Javascript
python基础教程之Hello World!
2014/08/29 Python
跟老齐学Python之一个免费的实验室
2014/09/14 Python
python通过exifread模块获得图片exif信息的方法
2015/03/16 Python
浅谈python 里面的单下划线与双下划线的区别
2017/12/01 Python
python利用sklearn包编写决策树源代码
2017/12/21 Python
对python函数签名的方法详解
2019/01/22 Python
pyhanlp安装介绍和简单应用
2019/02/22 Python
基于MATLAB和Python实现MFCC特征参数提取
2019/08/13 Python
Python学习笔记之列表推导式实例分析
2019/08/13 Python
python3连接mysql获取ansible动态inventory脚本
2020/01/19 Python
日本乐天官方海外转运服务:Rakuten Global Express
2018/11/30 全球购物
大学生励志演讲稿
2014/04/25 职场文书
教师党员公开承诺事项
2014/05/28 职场文书
售后客服工作职责
2014/06/16 职场文书
2014年公务员工作总结
2014/11/18 职场文书
党校党性分析材料
2014/12/19 职场文书
爱国主义主题班会
2015/08/14 职场文书
少年的你:世界上没有如果,要在第一次就勇敢的反抗
2019/11/20 职场文书