Экспортировать переменную из app.py в другой файл python - PullRequest
0 голосов
/ 13 января 2020

Я создал приложение Flask с помощью 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")

другой файл .py

from app import db
print(db)

Но я получаю ошибку.

ImportError: невозможно импортировать имя 'db'

В основном я делаю это, потому что я не хочу записывать логику SQLAlchemy c в app.py, но хочу сохранить ее в другом файле.

Кроме того , Я просто хочу, чтобы переменная db была экспортирована. Я не хочу, чтобы когда я запускаю otherfile.py, он также запускается print("TEST"), который находится в app.py

Я посмотрел на этот ответ с небольшой удачей:

Как разделить глобальный объект приложения в flask?

Разделить Python Flask приложение на несколько файлов

Как разделить flask приложение в несколько файлов py?

1 Ответ

2 голосов
/ 13 января 2020

Класс SQLAlchemy не должен получать параметр app при инициализации. Так что вы можете создать объект db в вашем otherfile.py и импортировать его в app.py, где вы можете передать объект app с приложением SQLAlchemy.init_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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...