zoukankan      html  css  js  c++  java
  • aiomysql异步操作mysql

    # coding:utf-8
    import traceback
    import logging
    import aiomysql
    import asyncio
    '''
    mysql 异步版本
    '''
    
    logobj = logging.getLogger('mysql')
    
    
    class Pmysql:
        def __init__(self):
            self.coon = None
            self.pool = None
    
        async def initpool(self):
            try:
                logobj.debug("will connect mysql~")
                __pool = await aiomysql.create_pool(
                    minsize=5,
                    maxsize=10,
                    host='127.0.0.1',
                    port=3306,
                    user='root',
                    password='root',
                    db='youku',
                    autocommit=True)
                return __pool
            except:
                logobj.error('connect error.', exc_info=True)
    
        async def getCurosr(self):
            conn = await self.pool.acquire()
            cur = await conn.cursor()
            return conn, cur
    
        async def query(self, query, param=None):
            conn, cur = await self.getCurosr()
            try:
                await cur.execute(query, param)
                return await cur.fetchall()
            except:
                logobj.error(traceback.format_exc())
            finally:
                if cur:
                    await cur.close()
                # 释放掉conn,将连接放回到连接池中
                await self.pool.release(conn)
    
        async def execute(self, query, param=None):
            conn, cur = await self.getCurosr()
            try:
                await cur.execute(query, param)
                if cur.rowcount == 0:
                    return False
                else:
                    return True
            except:
                logobj.error(traceback.format_exc())
            finally:
                if cur:
                    await cur.close()
                # 释放掉conn,将连接放回到连接池中
                await self.pool.release(conn)
    
    
    async def test():
        mysqlobj = await getAmysqlobj()
        # UPDATE `youku`.`person` SET `psName` = '张三丰' WHERE (`id` = '3');
        exeRtn = await mysqlobj.execute("update person set psName='马云' where id = 3")
        if exeRtn:
            print('操作成功')
        else:
            print('操作失败')
    
    
    async def getAmysqlobj():
        mysqlobj = Pmysql()
        pool = await mysqlobj.initpool()
        mysqlobj.pool = pool
        return mysqlobj
    
    if __name__ == '__main__':
        loop = asyncio.get_event_loop()
        loop.run_until_complete(test())
    

      

  • 相关阅读:
    c# 创建多线程
    使用opencvsharp通过mvvm在image中显示图片
    c# 创建文件/文件夹对话框
    wpf MVVM框架基础
    wpf DataBinding
    layui自动点击下拉列表的一项并选中
    LayUI默认样式调整
    mysql取某个组的前n条数据
    Kali3.0系统切换中文
    JS触发某元素周围元素的样式改变
  • 原文地址:https://www.cnblogs.com/ygy1997/p/11753335.html
Copyright © 2011-2022 走看看