Py MySQL подключение пула Python чистый код? это хорошо или нет - PullRequest
0 голосов
/ 26 марта 2020

Я хотел бы знать, хорош ли этот код, чистый и совершенный, я перехожу с PHP API базы данных на Python API базы данных

Не так много документации по PooledDB и Py MySQL и Пул соединений, так что если есть кто-то с опытом, который может сказать мне: P

import pymysql
from DBUtils.PooledDB import PooledDB
from datetime import datetime
import uuid
import flask
from flask import request, jsonify, abort
from flask_cors import CORS


MYSQL_CONFIG = {
    "host": "localhost",
    "port": 3306,
    "db": "p3IYfVR91X",
    "password": "09LD64ZvjP",
    "user": "p3IYfVR91X",
    "charset": "utf8mb4",
    "cursorclass": pymysql.cursors.DictCursor,
    "autocommit": True,
}
POOL_CONFIG = {
    "creator": pymysql,
    "maxconnections": 6,
    "mincached": 2,
    "maxcached": 5,
    "maxshared": 3,
    "blocking": True,
    "maxusage": None,
    "setsession": [],
    "ping": 0,
}
# create flask for rest API service
app = flask.Flask(__name__)
app.config["DEBUG"] = True
CORS(app, resources={r'/*': {'origins': "*"}}, supports_credentials=True)
def dict_factory(cursor, row):
    d = {}
    for idx, col in enumerate(cursor.description):
        d[col[0]] = row[idx]
    return d

@app.errorhandler(404)
def flask_ret_error(e):
    return "{}".format(str(e)), 404

@app.route('/', methods=['GET'])
def home():
    return "You do not belong here...", 200

@app.route('/api/stuff', methods=['GET'])
def get_stuff():
    try:
        retval = None
        conn = POOL.connection()
        cur = conn.cursor()
        cur.execute('SELECT * FROM stuff WHERE isDeleted<>1 AND status NOT IN (2, 3, 4) ORDER BY timestamp DESC;')
        result = cur.fetchall()
        retval = jsonify(result)

    except pymysql.Error as Err:
        retval = flask_ret_error(Err)

    finally:
        if cur:
            cur.close()
        if conn:
            conn.close()
        return retval

@app.route('/api/stuff/<string:id>', methods=['GET'])
def get_stuffx(id):
    try:
        retval = None
        conn = POOL.connection()
        cur = conn.cursor()
        cur.execute('SELECT * FROM stuff WHERE id=%s;', (id))
        result = cur.fetchone()
        retval = jsonify(result)

    except pymysql.Error as Err:
        retval = flask_ret_error(Err)

    finally:
        if cur:
            cur.close()
        if conn:
            conn.close()
        return retval

Это правильный подход для этого? или я что-то упустил.

...