Flask-SqlAlchemy 声明模型
Flask-SqlAlchemy declaring models
这是 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)
哪一个是正确的或者这些是什么意思?
他们都是正确的。
一个使用 flask-sqlalchemy 另一个只使用 'raw' sqlalchemy.
'pure' sqlalchemy 的优点是模型可以更容易地在 flask 应用程序之外使用。
如果您不打算在 Flask 外部使用它们,请坚持使用 flask-sqlalchemy 文档中描述的方法,因为它会为您节省大量时间和精力。
Flask sqlalchemy 只是一个轻量级扩展,可以更轻松地将 sqlalchemy 与 flask 集成。
简单的说,就是处理与flask请求集成的数据库连接代码,并增加一些方便的功能,for.实例,直接从 db
对象
访问 Model
、Column
、session
、engine
和其他有用的 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)
哪一个是正确的或者这些是什么意思?
他们都是正确的。 一个使用 flask-sqlalchemy 另一个只使用 'raw' sqlalchemy.
'pure' sqlalchemy 的优点是模型可以更容易地在 flask 应用程序之外使用。
如果您不打算在 Flask 外部使用它们,请坚持使用 flask-sqlalchemy 文档中描述的方法,因为它会为您节省大量时间和精力。
Flask sqlalchemy 只是一个轻量级扩展,可以更轻松地将 sqlalchemy 与 flask 集成。
简单的说,就是处理与flask请求集成的数据库连接代码,并增加一些方便的功能,for.实例,直接从 db
对象
Model
、Column
、session
、engine
和其他有用的 sqlalchemy 类