Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在烧瓶中放置以初始化DB_Python_Database_Flask - Fatal编程技术网

Python 在烧瓶中放置以初始化DB

Python 在烧瓶中放置以初始化DB,python,database,flask,Python,Database,Flask,我正在Flask中开发应用程序,它需要DB,所以我要做的是: app = Flask(__name__) @app.before_request def init_db_connection: # here I connect to my DB @app.teardown_request def destroy_db(exception): # here I destroy database connection 在开发服务器(app.run())上,我想这不是初始化数据库的最佳位置

我正在Flask中开发应用程序,它需要DB,所以我要做的是:

app = Flask(__name__)
@app.before_request
def init_db_connection:
  # here I connect to my DB

@app.teardown_request
def destroy_db(exception):
  # here I destroy database connection
在开发服务器(app.run())上,我想这不是初始化数据库的最佳位置,因为即使请求静态文件,DB也会被初始化。在生产环境中,我可以使用一个单独的web服务器来服务静态文件,所以这不应该是一个问题

但我仍然在想,这是初始化DB的正确方法,还是在那个时刻使用的Blueprint中初始化DB更好?只是想知道最佳实践以及你们是如何做到这一点的:)


谢谢

这是我过去做这件事的方式,也是flask文档中提倡的方式。我会坚持下去


您使用哪个库连接到数据库?如果库正在进行连接池或使用惰性连接,那么这应该不是问题。您好。我正在使用psycopg2连接到PostgreSQL。因此,您建议使用
psycopg2.pool
,并创建与
getconn
的连接。或者在上面使用SQLAlchemy。SQLAlchemy还可以处理连接池。谢谢你的提示。我现在不想使用SQLAlchemy(我正在处理简单的SQL查询,还不需要额外的复杂性),但将开始使用pooler。链接已断开。我认为新链接应该是@DavidBenussan,谢谢你的链接!我编辑了这篇文章,修复了原始答案时的内容链接,InternetArchive也提供了相同内容的版本,看起来更好一些。