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使用sorted函数对列表进行排序的方法
Apr 04 Python
pygame播放音乐的方法
May 19 Python
Python微信库:itchat的用法详解
Aug 14 Python
Python实现随机选择元素功能
Sep 14 Python
influx+grafana自定义python采集数据和一些坑的总结
Sep 17 Python
在python中利用GDAL对tif文件进行读写的方法
Nov 29 Python
Django中如何使用sass的方法步骤
Jul 09 Python
SpringBoot实现登录注册常见问题解决方案
Mar 04 Python
Python读取配置文件(config.ini)以及写入配置文件
Apr 08 Python
Python在后台自动解压各种压缩文件的实现方法
Nov 10 Python
python 图像增强算法实现详解
Jan 24 Python
Python实现信息管理系统
Jun 05 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/03 咖啡文化
PHP 和 HTML
2006/10/09 PHP
基于curl数据采集之单页面并行采集函数get_htmls的使用
2013/04/28 PHP
php开发中的页面跳转方法总结
2015/04/26 PHP
laravel异步监控定时调度器实例详解
2019/06/21 PHP
Javascript 去除数组的重复元素
2010/05/04 Javascript
zShowBox 图片放大展示jquery版 兼容性
2011/09/24 Javascript
JavaScript高级程序设计 阅读笔记(十二) js内置对象Math
2012/08/14 Javascript
ES6正则表达式扩展笔记
2017/07/25 Javascript
最适应的vue.js的form提交涉及多种插件【推荐】
2018/08/27 Javascript
vue-cli+axios实现文件上传下载功能(下载接收后台返回文件流)
2019/05/10 Javascript
微信小程序如何调用json数据接口并解析
2019/06/29 Javascript
在layui框架中select下拉框监听更改事件的例子
2019/09/20 Javascript
vue prop属性传值与传引用示例
2019/11/13 Javascript
[00:43]FTP典藏礼包 DOTA2三大英雄霸气新套装
2014/03/21 DOTA
[02:10]DOTA2亚洲邀请赛 EG战队出场宣传片
2015/02/07 DOTA
Python正则表达式教程之二:捕获篇
2017/03/02 Python
PyTorch搭建一维线性回归模型(二)
2019/05/22 Python
python 实现二维列表转置
2019/12/02 Python
Python面向对象中类(class)的简单理解与用法分析
2020/02/21 Python
解决python3中os.popen()出错的问题
2020/11/19 Python
python中的unittest框架实例详解
2021/02/05 Python
读书心得体会
2013/12/28 职场文书
药学专业学生的自我评价分享
2014/02/06 职场文书
预备党员2014全国两会学习心得体会
2014/03/10 职场文书
安全协议书范本
2014/04/21 职场文书
公司总经理助理岗位职责
2014/07/09 职场文书
创建绿色学校先进个人材料
2014/08/20 职场文书
教师党员批评与自我批评
2014/10/15 职场文书
大一新生检讨书
2014/10/29 职场文书
2014年客房部工作总结
2014/11/22 职场文书
2014年学校工会工作总结
2014/12/06 职场文书
2015年十一国庆节演讲稿
2015/03/20 职场文书
2016年端午节红领巾广播稿
2015/12/18 职场文书
如何用python识别滑块验证码中的缺口
2021/04/01 Python
Go 语言下基于Redis分布式锁的实现方式
2021/06/28 Golang