使用数据库配置或模型在Flask中运行SQLAlchemy查询之间的区别?

时间:2016-03-24 11:50:39

标签: python flask sqlalchemy flask-sqlalchemy

假设我的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)

有什么区别?

据我所知,查询返回完全相同的东西。所以我很难分辨出我应该使用哪种方法。或者没有区别?

创建和删除记录时怎么样?

1 个答案:

答案 0 :(得分:1)

它完全相同,但来自两种不同的方法。

经典的SQLAlchemy方法是db.session.query(Foo).filter_by(id=some_id)

然后,Flask-SQLAlchemy为所有模型添加一个属性,以启用第二种方法Foo.query.filter_by(id=some_id)

附加上下文(如果需要):第二种方法模仿Django ORM正在使用的方法,但是如果你在网上寻找SQLAlchemy材料,你将主要找到第一种方法。