小编Flo*_*ian的帖子

Psycopg2 和 Flask - 将连接绑定到 before_request 和 teardown_appcontext

干杯家伙,重构我的瓶的应用程序我被困在追平了数据库连接@app.before_request,并在关闭它@app.teardown_appcontext。我正在使用普通的 Psycopg2 和应用程序工厂模式。

首先,我创建了一个函数来调用应用程序工厂,因此我可以按照Miguel Grinberg 的建议使用 @app此处

def create_app(test_config=None):
    app = Flask(__name__, instance_relative_config=True)

    --

    from shop.db import connect_and_close_db
    connect_and_close_db(app)

    --

    return app
Run Code Online (Sandbox Code Playgroud)

然后我尝试了http://flask.pocoo.org/docs/1.0/appcontext/#storing-data 上建议的这种模式:

def connect_and_close_db(app):

    @app.before_request
    def get_db_test():
        conn_string = "dbname=testdb user=testuser password=test host=localhost"
        if 'db' not in g:
            g.db = psycopg2.connect(conn_string)
        return g.db

    @app.teardown_appcontext
    def close_connection(exception):
        db = g.pop('db', None)

        if db is not None:
            db.close()
Run Code Online (Sandbox Code Playgroud)

结果是:

TypeError: 'psycopg2.extensions.connection' object is not callable
Run Code Online (Sandbox Code Playgroud)

任何人都知道发生了什么以及如何使其发挥作用?

此外,我想知道如何访问连接对象来创建游标,一旦它的创建被绑定到before_request

psycopg2 flask

4
推荐指数
1
解决办法
3679
查看次数

标签 统计

flask ×1

psycopg2 ×1