Flask before_request和teardown_request用于数据库连接

时间:2013-12-08 19:08:24

标签: postgresql sqlalchemy flask psycopg2 flask-sqlalchemy

根据Flaskr教程,应在每次会话之前打开和关闭数据库连接:

@app.before_request
def before_request():
  g.db = connect_db()

@app.teardown_request
def teardown_request(exception):
  db = getattr(g, 'db', None)
  if db is not None:
    db.close()

但是,使用sqlite3时就是这种情况。

我的问题是:当使用postressql和SqlAlchemy时 - 是否需要以相同的方式打开和关闭连接,或者SQLAlchemy是否自动处理连接管理?

1 个答案:

答案 0 :(得分:2)

SQLAlchemy不了解您的Flask应用程序。因此,如果您想使用纯SQLAlchemy,则需要管理连接。

在没有足够的数据库连接,持久连接和连接池知识的情况下自己处理这些主题可能会导致性能和错误。 最佳做法是使用Flask-SQLAlchemy来抽象数据库连接管理。