由于不使用数据库连接,Python蓝图无法扩展至

时间:2016-05-19 17:09:34

标签: python flask flask-restful

我遗憾地遇到了烧瓶,蓝图以及使用与mysql的全局数据库连接而感到安心的问题。蓝图资源如何获得全局数据库连接?因此,如果我将全局conn定义为python.connector,那么如何使用带有蓝图的数据库?我没有看到将db conn传递给蓝图的方法。

注意,我不能也不能使用flask mysql ext等。因为我使用了fabric,所以它必须是来自python连接器的纯conn。

这是我的主要代码:

# views.py 
from flask import Blueprint
from flask_restful import Api
from resources.register import register
from app import app 

db = "This is my global mysql conn"


api_bp = Blueprint('api', __name__)
api = Api(api_bp)
api.add_resource(register, '/api/driver/register')
app.register_blueprint(api_bp)

这是我的资源:

from flask_restful import Resource
from flask import  request, jsonify

class register(Resource):
def post(self):
    data = request.json
    partner_ref = data['ref']
    partner_driver_ref = data['\driver_ref']
    query = """INSERT INTO %s (partner_ref,partner_driver_ref) VALUES ('%s','%s')""" % (ref,driver_ref)
    db.execute_query(query,select=False,table=None,key=None)
    status = {'status':'OK'}
    return jsonify(status)

1 个答案:

答案 0 :(得分:0)

如何将数据库连接放在g对象中?

@api_bp.before_app_request
def connect_db():
    if not hasattr(g, 'db'):
        g.db = db

@api_bp.teardown_app_context
def close_db():
    if hasattr(g, 'db'):
        # close your db connection here.

如果您想使用它,只需使用g.db.execute_query(...)

即可