python - 使用 Flask-SQLAlchemy 查询

标签 python sql sqlalchemy flask-sqlalchemy

我正在使用 Flask 构建 RESTful api 并使用 SQLAlchemy 将我的应用程序连接到 MySQL 数据库。

我在数据库中有两个模型:Order 和 Order_line。一个订单由多个订单行组成。每个订单行都有一个关联的状态。

我在将 SQL 请求转换为 Flask-SQLAlchemy 语句时遇到问题。加入特别困扰我。

这是我的模型:

class Order(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    date_created = db.Column(db.DateTime)
    lines = db.relationship('Order_line',
                            backref=db.backref('order',
                                               lazy='join'))
    def __init__(self, po):
        self.date_created = datetime.datetime.now()

class Order_line(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    order_id = db.Column(db.Integer, db.ForeignKey('order.id'))
    status_id = db.Column(db.Integer, db.ForeignKey('status.id'))

    def __init__(self, order_id):
        self.order_id = order_id
        self.status_id = 1

class Status(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    short_name = db.Column(db.String(60))
    description = db.Column(db.String(400))
    lines = db.relationship('Order_line',
                            backref=db.backref('status',
                                               lazy='join'))

    def __init__(self, short_name, description):
        self.short_name = short_name
        self.description = description

基本上,我想检索所有具有一个或多个 order_line 的 status_id 不同于 1 的订单(因此检索 Order.id)。

SQL 查询将是

SELECT id FROM `order`
INNER JOIN order_line
    ON order.id=order_line.order_id
WHERE
    order_line.status_id NOT LIKE 1
GROUP BY
    order.id

我没有找到将该 SQL 语句转换为 SQLAlchemy 命令的方法。我对 Flask-SQLAlchemy 包装器和“ Vanilla ”SQLAlchemy 之间的区别特别困惑。

最佳答案

您可以使用 .any() :

Order.query.filter(Order.lines.any(Order_line.status_id != 1))

关于python - 使用 Flask-SQLAlchemy 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25332972/

相关文章:

python - Django : RunTimeWarning : DateTimeField received a naive datetime while time zone support is active

python - 如何忽略一组字符直到遇到正则表达式中的指定字符?

python - 与 Pandas 中的 Groupby 滚动相关

mysql - 带有嵌入表的动态 SQL

sql - 将表列中的 XML 分解为 SQL Server 中的 View

python - ORM 列可以在 SQLAlchemy 中触发 session 刷新吗?

python - 元组和字典的优先队列

mysql - 如何使用MySQL字符串操作?

python - SQLAlchemy 中的性能一对多关系

python - 使用 sqlalchemy 从相关表中只选择一行