首页 > 解决方案 > 如何在 python 中使用“with”从 mysql.connector.pooling 打开连接?

问题描述

我在 mysqlpool (mysql.connector.pooling.MySQLConnectionPool) 中有 mysql 连接

我想从池中获取连接,使用“with”,例如: with connect(**conn_info) as conn: cur = conn.cursor() 我无法做到这一点,它在使用 with 打开连接时失败。

有没有办法这样做?

(使用此代码重现它)

from flask import Flask
app = Flask(__name__)
import mysql.connector
from mysql.connector import Error
from mysql.connector.connection import MySQLConnection
from mysql.connector import pooling
# try:

connection_pool = mysql.connector.pooling.MySQLConnectionPool(pool_name="pynative_pool",pool_size=2, pool_reset_session=True, host='192.168.50.91', database='sample', user='usr', password='abc')

print ("Printing connection pool properties ")
print("Connection Pool Name - ", connection_pool.pool_name)
print("Connection Pool Size - ", connection_pool.pool_size)
# Get connection object from a pool


def abc(connection_object):     
    # if connection_object.is_connected():
    db_Info = connection_object.get_server_info()
    print("Connected to MySQL database using connection pool ... MySQL Server version on ",db_Info)
    # i want to open this connection using a with
    cursor = connection_object.cursor()
    cursor.execute("select * from nmi_lambda limit 10")
    record = cursor.fetchone()
    # c.close()
    print ("Your connected to - ", record)
    return record

@app.route('/')
def hello_world():
    # unable to do this "with connect(**conn_info) as conn"
    connection_object = connection_pool.get_connection()
    record =  abc(connection_object)
    # connection_object.close()
    return record


if __name__=='__main__':
    app.run()

标签: pythonmysql

解决方案


推荐阅读