【发布时间】:2013-12-25 19:08:30
【问题描述】:
根据 Flaskr 教程,db connection 应该在每个 session 之前打开和关闭:
@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 会自动处理连接管理?
【问题讨论】:
-
Flask-SQLAlchemy 为你管理一个数据库连接池,所以你不必担心这些。
-
感谢米格尔。跟进:在使用 sqlalchemy 和 postgres 时,是否需要为模型显式定义一个 init 构造函数?在您的大型教程中,您没有使用一个,但是当我省略 init 时,我得到一个“TypeError:__init__() 恰好需要 1 个参数(给定 5 个)”错误。
-
SQLAlchemy 还为您的模型提供了默认构造函数。此默认构造函数采用
**kwargs初始化模型的属性。我不明白为什么你会得到TypeError,查看堆栈跟踪以查看带有一个参数的__init__()构造函数在哪里,这不是SQLAlchemy 定义的构造函数类型。
标签: postgresql sqlalchemy flask psycopg2 flask-sqlalchemy