Flask-SqlAlchemy декларирующие модели
Это файл application.py:
db = SQLAlchemy()
migrate = Migrate()
db.app = app
db.init_app(app)
migrate.init_app(app, db)
Я обнаружил, что могу объявить модель двумя разными способами.
from application import db
class MyModel(db.Model):
id = db.Column(db.Integer, primary_key=True)
или же
from sqlalchemy import Model, Column, Integer
class MyModel(Model):
id = Column(Integer, primary_key=True)
Какой из них прав или что все это значит?
1 ответ
Они оба верны. Один использует колбу-sqlalchemy, другой просто использует "сырую" sqlalchemy.
Преимущества "чистой" sqlalchemy в том, что модели легче использовать за пределами колб.
Если вы не планируете использовать их вне колбы, просто придерживайтесь метода, описанного в документации на колбу, так как это сэкономит вам много времени и усилий.
Flask sqlalchemy - это просто облегченное расширение, упрощающее интеграцию sqlalchemy с флягой.
Проще говоря, он обрабатывает код соединения с базой данных, интегрированный с запросами в колбу, и добавляет некоторые удобные функции. Экземпляр, доступ Model
, Column
, session
, engine
и другие полезные классы sqlalchemy прямо из db
объект