Use raw SQL in an ORM query

前端 未结 2 846
情话喂你
情话喂你 2021-01-15 20:30

Is it possible to make edits or override the ORM\'s generated SQL with your own raw SQL? Or is the ORM expected to be flexible enough to build pretty much any query I could

2条回答
  •  执笔经年
    2021-01-15 21:05

    The answer by @Abdou is the proper way to go, but you could also run your textual SQL using Query.from_statement():

    session.query(AllocationStatus).\
        from_statement(text("""
            SELECT allocation_status.*
            FROM allocation_status
            LEFT JOIN allocation_status allocation_status2
                   ON allocation_status.allocation_id = allocation_status2.allocation_id
                  AND allocation_status.id < allocation_status2.id
            WHERE allocation_status2.id IS NULL;""")).\
        all()
    

    Note the use of text().

提交回复
热议问题