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

标签 python flask sqlalchemy flask-sqlalchemy

<分区>

假设我的 Flask 应用程序中有这样一个模型:

class Foo(db.Model):
     id = db.Column(db.Integer, primary_key=True)
     bar = db.Column(db.String)

在 Flask View 中,我想查询我的数据库以检索这种类型的记录。

在教程中,我看到人们以两种方式运行这样的查询:使用 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)

然后 View 中的查询看起来像这样......

my_query = db.session.query(Foo).filter_by(id=some_id)

使用模型

我看到执行查询的另一种方式是使用模型,就像这样......

import Foo
my_query = Foo.query.filter_by(id=some_id)

有什么区别?

据我所知,查询返回完全相同的内容。所以我很难说我应该使用哪种方法。还是没有区别?

关于创建和删除记录呢?

最佳答案

这完全是一回事,但来自两种不同的方法。

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

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

其他上下文(如果需要):第二种方法模仿 Django ORM 正在使用的方法,但如果您在 Web 上查找 SQLAlchemy Material ,您通常会找到第一种方法。

关于python - 使用数据库配置或模型在 Flask 中运行 SQLAlchemy 查询的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36199505/

相关文章:

python - sqlalchemy中select语句的写法

python - 新建/覆盖 SQLAlchemy 运算符编译器输出

python - 使用 PyGame 对存储在元组中的 pygame.Surface 进行位 block 传输

python - Django 是否有计划原生处理 NoSQL 数据库?

python - Peewee:减少条件语句在一定长度后中断的位置

python - 如何在 python Flask 中验证 html 表单?

Javascript - 将签名板结果发送到 Flask

python - Flask 如何通过装饰器传递 request 变量,而无需我将 request 作为参数?

python - 从 SQLAlchemy 填充 QTableView

python - 如何配置 Python key 环以从 Windows 7 上的 Windows 凭据管理器中提取凭据?