【问题标题】:In Flask-SQLAlchemy, where do I initialise and store the database object?在 Flask-SQLAlchemy 中,我在哪里初始化和存储数据库对象?
【发布时间】:2013-07-30 14:24:26
【问题描述】:

我正在使用 Python 中的 Flask 和 SQLAlchemy 构建一个网站,到目前为止我玩得很开心。

不过,有些事情我不确定。以下代码用于连接数据库:

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'bla'
db = SQLAlchemy(app)

我如何在不同的文件中重用这个对象呢?我尝试将其存储在g 中,但是当我尝试在 Web 请求范围之外使用数据库时,这会导致数据库模型出现问题。有没有一种标准方法可以让db 在多个文件/类中可访问?

【问题讨论】:

    标签: python database sqlalchemy flask flask-sqlalchemy


    【解决方案1】:

    将其放入项目文件夹下的__init__.py 文件中。这样,您的应用程序就变成了一个包,您可以重复使用这些变量。例如,如果您的项目名为 myproject,那么您可以拥有

    myproject/
        __init__.py
        models.py
        views.py
    

    现在,在 models.py 等模块中,您可以这样做:

    from myproject import db
    

    【讨论】:

    • 这导致ImportError: No module named myproject。 “myproject”只是包含项目的文件夹的名称吗?或者这是我必须配置的东西才能以这种方式使用它?
    • 'myproject' 只是一个例子。使用项目中的任何文件夹名称。所以是的,它是包含项目的文件夹的名称。我认为您应该阅读一些关于 python 中的包的信息。它将帮助您了解为什么以及如何使用__init__.py
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-18
    • 2010-10-03
    • 1970-01-01
    • 2016-12-03
    • 2011-02-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多