python获得mysql连接的最佳使用示例

安装方法 pip install mysql-connector

#! /usr/env python
# coding: utf-8

import mysql.connector
from mysql.connector import errorcode

docker_mysql = {
    'user': 'xxx',
    'password': 'xxx',
    'host': 'xx.xx.xx.xx',
    'port': 3306,
    'database': 'yyy'
}


def get_mysql_info(sql):
    cnx = cur = None
    try:
        cnx = mysql.connector.connect(**docker_mysql)
    except mysql.connector.Error as err:
        if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
            print('Something is wrong with your user name or password')
        elif err.errno == errorcode.ER_BAD_DB_ERROR:
            print("Database does not exist")
        else:
            print(err)
    else:
        cur = cnx.cursor()
        cur.execute(sql)
        for row in cur.fetchall():
            print(row)
    finally:
        if cur:
            cur.close()
        if cnx:
            cnx.close()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很高兴能回答您的问题。关于Python使用MySQL连接池,可以使用第三方库PyMySQL提供的连接池功能,也可以使用Python标准库中concurrent.futures提供的线程池和进程池来实现。 具体操作可以参考以下代码示例: ``` import pymysql from pymysql import cursors from concurrent.futures import ThreadPoolExecutor, as_completed # 创建连接池 class ConnectionPool(object): def __init__(self, size=10): self.__pool = [] for _ in range(size): conn = pymysql.connect(host='localhost', user='root', password='password', database='test', cursorclass=cursors.DictCursor) self.__pool.append(conn) # 获取连接 def get_conn(self): return self.__pool.pop() # 释放连接 def add_conn(self, conn): self.__pool.append(conn) pool = ConnectionPool() # 使用连接池查询数据 def query(sql): conn = pool.get_conn() cursor = conn.cursor() cursor.execute(sql) result = cursor.fetchall() cursor.close() pool.add_conn(conn) return result # 使用线程池并发查询数据 def main(): sqls = ['SELECT * FROM table1;', 'SELECT * FROM table2;', 'SELECT * FROM table3;'] with ThreadPoolExecutor(max_workers=3) as executor: future_to_sql = {executor.submit(query, sql): sql for sql in sqls} for future in as_completed(future_to_sql): sql = future_to_sql[future] try: result = future.result() except Exception as e: print('%s 报错: %s' % (sql, str(e))) else: print('%s 查询结果: %s' % (sql, str(result))) if __name__ == '__main__': main() ``` 以上是使用连接池和线程池来实现MySQL查询操作的示例代码,希望对您有帮助。如果您有其他问题,欢迎继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值