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中urllib模块用法实例详解
Nov 19 Python
Python中的包和模块实例
Nov 22 Python
Python每天必学之bytes字节
Jan 28 Python
基于Python 的进程管理工具supervisor使用指南
Sep 18 Python
Python中的函数作用域
May 07 Python
python selenium 对浏览器标签页进行关闭和切换的方法
May 21 Python
python TKinter获取文本框内容的方法
Oct 11 Python
Python自动发送邮件的方法实例总结
Dec 08 Python
python不使用for计算两组、多个矩形两两间的iou方式
Jan 18 Python
python实现滑雪游戏
Feb 22 Python
Python 操作 MySQL数据库
Sep 18 Python
基于PyTorch实现一个简单的CNN图像分类器
May 29 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
无线电的诞生过程
2021/03/01 无线电
法国:浪漫之都的咖啡文化
2021/03/03 咖啡文化
解决dede生成静态页和动态页转换的一些问题,及火车采集入库生成动态的办法
2007/03/29 PHP
php imagecreatetruecolor 创建高清和透明图片代码小结
2010/05/15 PHP
PHP解析html类库simple_html_dom的转码bug
2014/05/22 PHP
jQuery中nextAll()方法用法实例
2015/01/07 Javascript
JavaScript拖拽、碰撞、重力及弹性运动实例分析
2016/01/08 Javascript
实例讲解JavaScript中的this指向错误解决方法
2016/06/13 Javascript
解决Angular.Js与Django标签冲突的方案
2016/12/20 Javascript
详解Vue2+Echarts实现多种图表数据可视化Dashboard(附源码)
2017/03/21 Javascript
微信小程序实现获取自己所处位置的经纬度坐标功能示例
2017/11/30 Javascript
浅谈Vue的响应式原理
2019/05/30 Javascript
RxJS的入门指引和初步应用
2019/06/15 Javascript
vue路由守卫,限制前端页面访问权限的例子
2019/11/11 Javascript
你可能从未使用过的11+个JavaScript特性(小结)
2020/01/08 Javascript
javascript设计模式 ? 抽象工厂模式原理与应用实例分析
2020/04/09 Javascript
[34:47]完美世界DOTA2联赛PWL S2 Magma vs LBZS 第一场 11.18
2020/11/18 DOTA
值得收藏,Python 开发中的高级技巧
2018/11/23 Python
Python面向对象程序设计类的多态用法详解
2019/04/12 Python
对django后台admin下拉框进行过滤的实例
2019/07/26 Python
浅析python 中大括号中括号小括号的区分
2019/07/29 Python
详解Anconda环境下载python包的教程(图形界面+命令行+pycharm安装)
2019/11/11 Python
python+Selenium自动化测试——输入,点击操作
2020/03/06 Python
Python中的wordcloud库安装问题及解决方法
2020/05/27 Python
html5使用canvas画空心圆与实心圆
2014/12/15 HTML / CSS
HTML5中的强制下载属性download使用实例解析
2016/05/12 HTML / CSS
大学生就业推荐信范文
2013/11/29 职场文书
中医临床专业自我鉴定范文
2014/01/15 职场文书
保密承诺书范文
2014/03/27 职场文书
公路绿化方案
2014/05/12 职场文书
小学校本培训方案
2014/06/06 职场文书
给老婆的检讨书
2015/01/27 职场文书
财政局个人总结
2015/03/04 职场文书
2015年街道办事处工作总结
2015/05/22 职场文书
CSS 实现Chrome标签栏的技巧
2021/08/04 HTML / CSS
MyBatis在注解上使用动态SQL方式(@select使用if)
2022/07/07 Java/Android