MST

星途 面试题库

面试题:Python中Flask与Django性能优化之中等难度题

在Flask应用中,如何通过数据库连接池来优化数据库访问性能?请简要说明实现步骤并给出关键代码示例。
46.0万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试

实现步骤

  1. 安装依赖:安装数据库连接池相关的库,如DBUtils。对于Flask应用,也需要确保Flask库已安装。可以使用pip install Flask DBUtils进行安装。
  2. 配置数据库连接信息:在Flask应用中设置数据库连接的相关参数,如主机、端口、用户名、密码、数据库名称等。
  3. 创建数据库连接池:使用DBUtils库创建连接池对象,设置连接池的参数,如最大连接数等。
  4. 在视图函数中使用连接池获取连接:在需要访问数据库的视图函数中,从连接池中获取数据库连接,执行数据库操作,操作完成后将连接归还到连接池。

关键代码示例

from flask import Flask
from dbutils.pooled_db import PooledDB
import pymysql

app = Flask(__name__)

# 配置数据库连接信息
db_config = {
    'host': 'localhost',
    'port': 3306,
    'user': 'root',
    'password': 'password',
    'database': 'test_db',
    'charset': 'utf8mb4'
}

# 创建数据库连接池
pool = PooledDB(
    creator=pymysql,  # 使用pymysql作为数据库驱动
    maxconnections=10,  # 最大连接数
    **db_config
)


@app.route('/')
def index():
    # 从连接池获取连接
    conn = pool.connection()
    try:
        with conn.cursor() as cursor:
            cursor.execute('SELECT VERSION()')
            result = cursor.fetchone()
            return f"Database version: {result[0]}"
    finally:
        # 归还连接到连接池
        conn.close()


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