Расширение Flask-SQLAlchemy, как и большинство расширений Flask, должно создаваться за пределами фабрики, а затем инициализироваться на заводе-изготовителе с помощью init_app
. Это значит, что вы можете использовать объект db
до создания приложения.
db = SQLAlchemy()
def create_app():
app = Flask(__name__)
db.init_app(app)
return app
Приложение Flask, как и любой правильно разработанный проект Python, должно быть устанавливаемым пакетом. Это просто сделать: убедитесь, что ваш макет проекта имеет смысл, затем добавьте основной файл setup.py
.
project/
my_flask_package/
__init__.py # at the most basic, this contains create_app and db
setup.py
from setuptools import setup, find_packages
setup(
name='my_flask_package',
version='1.0',
packages=find_packages(),
install_requires=['flask', 'flask-sqlalchemy'],
)
$ python setup.py sdist
Теперь вы можете установить приложение Flask, а также его базы данных, для использования в других проектах. Установите и импортируйте его во виртуальный файл второго проекта, затем создайте и нажмите приложение для его инициализации.
$ pip install my_flask_package-1.0.tar.gz
from my_flask_package import db, create_app
create_app().app_context().push()
db.session.query(...)
Если вы обеспокоены накладными расходами на создание своего приложения, вы можете добавить аргументы к функции create_app
для управления тем, что инициализируется. В большинстве случаев это не должно быть проблемой.
Добавьте UpdateSourceTrigger в текстовое поле со значением PropertyChanged. По умолчанию текстовое поле обновляет источник, когда он теряет фокус.
<TextBox Text="{Binding MyText, UpdateSourceTrigger=PropertyChanged}"/>