首页 > 数据库 >pymysqlpool踩坑和应用

pymysqlpool踩坑和应用

时间:2023-04-10 14:33:21浏览次数:30  
标签:pymysqlpool self cursor connection user 应用 pool

上周部署一个web服务时用到了多线程操作mysql数据库,虽然数据可以操作入库成功,但是一直报错‘pymysql.err.InterfaceError: (0, '')’。查了下资料是因为多线程操作引起的报错,需要使用连接池管理数据库连接。

chatGPT也给出了以下回答:

你可以使用连接池库(如pymysqlpoolDBUtils等)来实现连接池。以下是一个示例代码,使用pymysqlpool实现数据库连接池:

import pymysql
from pymysqlpool import ConnectionPool

class Database:
    def __init__(self, host, port, username, password, db_name, pool_size=5):
        self.host = host
        self.port = port
        self.username = username
        self.password = password
        self.db_name = db_name
        self.pool = ConnectionPool(
            pool_name="mypool",
            host=self.host,
            port=self.port,
            user=self.username,
            password=self.password,
            db=self.db_name,
            pool_size=pool_size,
        )

    def get_connection(self):
        return self.pool.get_connection()

    def execute(self, query, args=None):
        conn = self.get_connection()
        try:
            with conn.cursor() as cursor:
                cursor.execute(query, args)
                result = cursor.fetchall()
            conn.commit()
        finally:
            conn.close()
        return result

但是在我pip install pymysqlpool安装后,运行程序时报错无法import pymysqlpool。我查看了conda的环境,conda list后发现已经安装了PyMySQLPool,后来我把程序中import pymysqlpool改成了import PyMySQLPool,还是无法运行程序。后来我又查了一些资料发现PyMySQLPool和pymysqlpool不是同一个库_(¦3」∠)_
接下来是pymysqlpool的安装使用流程(安装和使用其实按照git的简介来就行了):

git地址:https://github.com/luvvien/pymysqlpool

下载源码后,使用 pip 安装即可:pip3 setup.py install,注意需要使用 Python3 环境。

1.clone代码:cd到你的路径,git clone https://github.com/luvvien/pymysqlpool。

2.安装:我这里使用的是python setup.py install执行setup.py文件安装的。

原git介绍中的使用示例:

from pymysqlpool import ConnectionPool

config = {
    'pool_name': 'test',
    'host': 'localhost',
    'port': 3306,
    'user': 'root',
    'password': 'root',
    'database': 'test'
}

def connection_pool():
    # Return a connection pool instance
    pool = ConnectionPool(**config)
    return pool

# 直接访问并获取一个 cursor 对象,自动 commit 模式会在这种方式下启用
with connection_pool().cursor() as cursor:
    print('Truncate table user')
    cursor.execute('TRUNCATE user')

    print('Insert one record')
    result = cursor.execute('INSERT INTO user (name, age) VALUES (%s, %s)', ('Jerry', 20))
    print(result, cursor.lastrowid)

    print('Insert multiple records')
    users = [(name, age) for name in ['Jacky', 'Mary', 'Micheal'] for age in range(10, 15)]
    result = cursor.executemany('INSERT INTO user (name, age) VALUES (%s, %s)', users)
    print(result)

    print('View items in table user')
    cursor.execute('SELECT * FROM user')
    for user in cursor:
        print(user)

    print('Update the name of one user in the table')
    cursor.execute('UPDATE user SET name="Chris", age=29 WHERE id = 16')
    cursor.execute('SELECT * FROM user ORDER BY id DESC LIMIT 1')
    print(cursor.fetchone())

    print('Delete the last record')
    cursor.execute('DELETE FROM user WHERE id = 16')
import pandas as pd
from pymysqlpool import ConnectionPool

config = {
    'pool_name': 'test',
    'host': 'localhost',
    'port': 3306,
    'user': 'root',
    'password': 'root',
    'database': 'test'
}


with connection_pool().connection() as conn:
    pd.read_sql('SELECT * FROM user', conn)


# 或者
connection = connection_pool().borrow_connection()
pd.read_sql('SELECT * FROM user', conn)
connection_pool().return_connection(connection)

 

标签:pymysqlpool,self,cursor,connection,user,应用,pool
From: https://www.cnblogs.com/jimmy996/p/17302841.html

相关文章

  • CSS样式中颜色与颜色值的应用
    使用CSS描绘页面样式时,颜色是其中不可或缺的,无论是对文本、背景还是边框、阴影,我们都写过无数代码用来增添颜色。而为了让网页的色彩表现更出色,我们很有必要完整梳理下CSS中的色彩。要讲清楚CSS中的颜色,离不开颜色模型的概念,这是我们需要先了解的。颜色模型颜色模型计算机中用来......
  • CSS样式中颜色与颜色值的应用
    使用CSS描绘页面样式时,颜色是其中不可或缺的,无论是对文本、背景还是边框、阴影,我们都写过无数代码用来增添颜色。而为了让网页的色彩表现更出色,我们很有必要完整梳理下CSS中的色彩。要讲清楚CSS中的颜色,离不开颜色模型的概念,这是我们需要先了解的。颜色模型颜色模型计算机中用......
  • 2 01 | 是什么推动了单体应用到微服务架构的演进?
    你好,我是姚秋辰。“微服务”是近些年在大型应用架构领域的一个热门话题,从实践领域来看,我们身边的一二线大厂也纷纷选择全面拥抱微服务。就拿国内Java系的一线大厂来说,如阿里系、美团点评、PDD等,它们都将自己的核心业务系统构建在微服务架构之上。即便你是刚参加工作的萌新,也一......
  • 人工智能技术:未来的发展趋势和应用前景
    人工智能技术已经成为了当今最热门的话题之一。人工智能技术的应用范围越来越广泛,从智能家居到智能医疗,从智能交通到智能金融,无所不包。那么,人工智能技术的未来发展趋势和应用前景又是怎样的呢?一、人工智能技术的未来发展趋势1.智能化和自动化水平不断提高随着人工智能技术的......
  • 案例详解 | 4.3寸串口屏应用于两轮电动车仪表方案
    近年来,我国部分城市陆续开始改变对两轮车的高压态势,多座大型城市出台解禁令,为两轮车产业的回暖奠定了基础。两轮车因其机动灵活、通行效率高的特点,受到越来越多消费者的支持。经调研发现,消费者购车时除关注电池续航、安全性因素外,对于车辆的舒适性、外观的需求也进一步提升,83.9%的......
  • python 字符填充应用
    填充常跟对齐一起使用。^、<、>分别代表居中对齐、左对齐和右对齐,其后面的参数为宽度。冒号:后面为填充的字符,只能是一个字符,默认以空格填充。>>>'{:>10}'.format('32')'32'>>>'{:0>6}'.format('33')'000033'>>>ab=�......
  • 全网最详细中英文ChatGPT-GPT-4示例文档-食谱智能生成从0到1快速入门——官网推荐的48
    目录Introduce简介setting设置Prompt提示Sampleresponse回复样本APIrequest接口请求python接口请求示例node.js接口请求示例curl命令示例json格式示例其它资料下载ChatGPT是目前最先进的AI聊天机器人,它能够理解图片和文字,生成流畅和有趣的回答。如果你想跟上AI时代的潮流......
  • 土力学-应力路径试验与应用分析(转摘)
    转摘自:https://mp.weixin.qq.com/s/MWP5gTlnNSk-_CcScndJVQ   ......
  • 全网最详细中英文ChatGPT-GPT-4示例文档-文章大纲智能生成器从0到1快速入门——官网推
    目录Introduce简介setting设置Prompt提示Sampleresponse回复样本APIrequest接口请求python接口请求示例node.js接口请求示例curl命令示例json格式示例其它资料下载ChatGPT是目前最先进的AI聊天机器人,它能够理解图片和文字,生成流畅和有趣的回答。如果你想跟上AI时代的潮流......
  • unix并发技术的学习及在扫描器上的应用二
    unix并发技术的学习及在扫描器上的应用二上一篇并发技术说的是多进程,本来想在那的基础上加进进程间同步和通信,不过暂时还没有掌握到,只能换成多线程来做rp了.第一部分--基础知识一.线程概念: 线程是提高代码响应和性能的绝好的手段,其由内核按时间分片进行管理.进程可含多线程,线程间......