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 文件操作技巧(File operation) 实例代码分析
Aug 11 Python
Python 抓取动态网页内容方案详解
Dec 25 Python
浅谈python中的getattr函数 hasattr函数
Jun 14 Python
Python各类图像库的图片读写方式总结(推荐)
Feb 23 Python
Python使用matplotlib绘制余弦的散点图示例
Mar 14 Python
Python后台管理员管理前台会员信息的讲解
Jan 28 Python
python 读取文件并把矩阵转成numpy的两种方法
Feb 12 Python
Python循环实现n的全排列功能
Sep 16 Python
什么是python类属性
Jun 10 Python
查看keras各种网络结构各层的名字方式
Jun 11 Python
理解Django 中Call Stack机制的小Demo
Sep 01 Python
讲解Python实例练习逆序输出字符串
May 06 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无限分类代码,支持数组格式化、直接输出菜单两种方式
2011/05/18 PHP
php笔记之:php函数range() round()和list()的使用说明
2013/04/26 PHP
PHP register_shutdown_function函数的深入解析
2013/06/03 PHP
为你总结一些php信息函数
2015/10/21 PHP
PHP框架实现WebSocket在线聊天通讯系统
2019/11/21 PHP
不同浏览器对回车提交表单的处理办法
2010/02/13 Javascript
JS获取后台Cookies值的小例子
2013/03/04 Javascript
js获取input长度并根据页面宽度设置其大小及居中对齐
2014/08/22 Javascript
JavaScript encodeURI 和encodeURIComponent
2015/12/04 Javascript
JavaScript 冒泡排序和选择排序的实现代码
2016/09/03 Javascript
BootstrapValidator实现注册校验和登录错误提示效果
2017/03/10 Javascript
利用Mongoose让JSON数据直接插入或更新到MongoDB
2017/05/03 Javascript
Angular2中如何使用ngx-translate进行国际化
2017/05/21 Javascript
基于vue2实现左滑删除功能
2017/11/28 Javascript
JS中获取 DOM 元素的绝对位置实例详解
2018/04/23 Javascript
jQuery实现动态加载select下拉列表项功能示例
2018/05/31 jQuery
vue-resource请求实现http登录拦截或者路由拦截的方法
2018/07/11 Javascript
Python实现的数据结构与算法之队列详解
2015/04/22 Python
linux下python抓屏实现方法
2015/05/22 Python
用python实现的线程池实例代码
2018/01/06 Python
python爬虫 execjs安装配置及使用
2019/07/30 Python
python被修饰的函数消失问题解决(基于wraps函数)
2019/11/04 Python
解决python replace函数替换无效问题
2020/01/18 Python
Python代码一键转Jar包及Java调用Python新姿势
2020/03/10 Python
opencv+python实现鼠标点击图像,输出该点的RGB和HSV值
2020/06/02 Python
pandas使用函数批量处理数据(map、apply、applymap)
2020/11/27 Python
Python jieba库分词模式实例用法
2021/01/13 Python
HTML5实现预览本地图片
2016/02/17 HTML / CSS
MCM英国官网:奢侈皮具制品
2017/04/18 全球购物
俄罗斯玩具、儿童用品、儿童服装和鞋子网上商店:MyToys.ru
2019/10/14 全球购物
竞争上岗实施方案
2014/03/21 职场文书
环境工程专业毕业生求职信
2014/09/30 职场文书
信访稳定工作汇报
2014/10/27 职场文书
看上去很美观后感
2015/06/10 职场文书
JVM入门之类加载与字节码技术(类加载与类的加载器)
2021/06/15 Java/Android
使用 Apache Superset 可视化 ClickHouse 数据的两种方法
2021/07/07 Servers