【问题标题】:How to convert SQL statement into correct SQLAlchemy expression如何将 SQL 语句转换为正确的 SQLAlchemy 表达式
【发布时间】:2014-05-31 14:23:37
【问题描述】:

我有一个 SQL 语句来计算不同商品的库存量。因此,我总结了所有交付的物品并减去所有售出的物品。给出正确结果的 SQL 语句如下:

SELECT     Item.id,
    Item.description,
    deliver.del_amount,
    sell.sell_amount ,
    deliver.del_amount - sell.sell_amount as stock
from item
join (
    select Deliveryitem.Item_id as del_id,
    sum(DeliveryItem.amount) as del_amount
    from  Deliveryitem group by DeliveryItem.item_id

) deliver on deliver.del_id = item.id
 join (
    SELECT LineItem.Item_id as sell_id,
    sum(LineItem.amount) as sell_amount
    from  LineItem  group by LineItem.item_id
) sell on sell.sell_id=item.id

现在我需要将其转换为等效的 SQLAlchemy 语句。我不知道如何正确表达这两个连接以及交付和销售标签。有人可以帮我吗?

【问题讨论】:

    标签: python sql sqlite sqlalchemy


    【解决方案1】:

    SQLAlchemy 的美妙之处在于,当您开始处理难以用 SQLAlchemy 表达式语法表达的复杂查询时,您可以直接使用 SQL 并将结果填充到您的 ORM 类中。

    你可以做一些事情

    Session.query(Item, deliver, sell, stock).from_statement("""
    SELECT     Item.id,
        Item.description,
        deliver.del_amount,
        sell.sell_amount ,
        deliver.del_amount - sell.sell_amount as stock
    from item
    join (
        select Deliveryitem.Item_id as del_id,
        sum(DeliveryItem.amount) as del_amount
        from  Deliveryitem group by DeliveryItem.item_id
    
    ) deliver on deliver.del_id = item.id
     join (
        SELECT LineItem.Item_id as sell_id,
        sum(LineItem.amount) as sell_amount
        from  LineItem  group by LineItem.item_id
    ) sell on sell.sell_id=item.id
    """)
    

    【讨论】:

      猜你喜欢
      • 2022-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-22
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      相关资源
      最近更新 更多