假设我的Flask应用程序中有一个模型,如下所示:
class Foo(db.Model):
id = db.Column(db.Integer, primary_key=True)
bar = db.Column(db.String)
在Flask视图中,我想查询我的数据库以检索此类型的记录。
在教程中我看到人们以两种方式运行这样的查询:使用flask.ext.sqlalchemy.SQLAlchemy
配置或模型。
flask.ext.sqlalchemy.SQLAlchemy
应用程序设置如下......
from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config.from_object(os.environ['MY_SETTINGS'])
db = SQLAlchemy(app)
然后视图中的查询看起来像这样......
my_query = db.session.query(Foo).filter_by(id=some_id)
我看到执行查询的另一种方式是使用模型,就像这样......
import Foo
my_query = Foo.query.filter_by(id=some_id)
据我所知,查询返回完全相同的东西。所以我很难分辨出我应该使用哪种方法。或者没有区别?
创建和删除记录时怎么样?
答案 0 :(得分:1)
它完全相同,但来自两种不同的方法。
经典的SQLAlchemy方法是db.session.query(Foo).filter_by(id=some_id)
。
然后,Flask-SQLAlchemy为所有模型添加一个属性,以启用第二种方法Foo.query.filter_by(id=some_id)
。
附加上下文(如果需要):第二种方法模仿Django ORM正在使用的方法,但是如果你在网上寻找SQLAlchemy材料,你将主要找到第一种方法。