将变量从app.py导出到另一个python文件

2024-04-23 08:21:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我用SQLAlchemy创建了一个烧瓶应用程序。 我在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: cannot import name '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?


Tags: 文件namepytestimportconfigappflask
1条回答
网友
1楼 · 发布于 2024-04-23 08:21:23

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()

相关问题 更多 >