【问题标题】:Export variable from app.py to another python file将变量从 app.py 导出到另一个 python 文件
【发布时间】:2020-04-30 06:35:59
【问题描述】:

我使用 SQLAlchemy 创建了一个 Flask 应用程序。 我在app.py 中初始化了数据库,但我想在另一个文件中使用它:otherfile.py

app.py

app = Flask(__name__)
app.config['JSONIFY_PRETTYPRINT_REGULAR'] = True
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///my_database'
db = SQLAlchemy(app)
print("TEST")

otherfile.py

from app import db
print(db)

但我得到了错误。

ImportError: 无法导入名称 'db'

基本上,我这样做是因为我不想在app.py 中编写 SQLAlchemy 逻辑,但我想将其保存在另一个文件中。

另外,我只想导出变量db。我不希望当我运行otherfile.py 时,它也会运行print("TEST"),它位于app.py

我很幸运地看了这些答案:

How to share the global app object in flask?

Split Python Flask app into multiple files

How to divide flask app into multiple py files?

【问题讨论】:

    标签: python flask


    【解决方案1】:

    SQLAlchemy 类在初始化时不需要接收app 参数。所以你可以做的是在你的otherfile.py 中创建db 对象并将其导入app.py,在那里你可以将app 对象与SQLAlchemy.init_app() 一起传递给它。

    app.py

    from flask import Flask
    from otherfile import db
    
    app = Flask(__name__)
    app.config['JSONIFY_PRETTYPRINT_REGULAR'] = True
    app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
    app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///my_database'
    
    db.init_app(app)
    

    otherfile.py

    from flask_sqlalchemy import SQLAlchemy
    
    db = SQLAlchemy()
    

    【讨论】:

    • 谢谢!我现在如何连接otherfile.py 我的 sqlite 数据库?还是因为我在 app.py app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///my_database) 中写过它就已经连接了?
    • @Prova12 它会在需要时使用您在 app.config 中设置的凭据进行连接
    猜你喜欢
    • 1970-01-01
    • 2021-04-17
    • 1970-01-01
    • 1970-01-01
    • 2021-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-03
    相关资源
    最近更新 更多