如果您执行这样的查询:
models.Article.query.limit(5).limit(10)
限制实际上是 10,5 被覆盖了。
我有一些代码想要对 Query 应用限制,但前提是尚未应用限制。有没有办法确定是否已经存在限制,缺少 if 'LIMIT' in str(query): ?
请您参考如下方法:
据我了解,您可以检查是否有 _limit 私有(private)属性集:
query = models.Article.query.limit(5)
print(query._limit) # prints 5
query = models.Article.query
print(query._limit) # prints None
这可能是自 limit() method 以来检查应用限制是否存在的最直接方法。本身就是这样做的:
@_generative(_no_statement_condition)
def limit(self, limit):
"""Apply a ``LIMIT`` to the query and return the newly resulting
``Query``.
"""
self._limit = limit
您还可以在字符串检查中执行子字符串 - 查看 LIMIT 是否在查询语句内,但是如果不小心将“limit”用作列/表名称的一部分,这很容易失败,或者是一个字面的“限制”,或者以除具有特殊含义之外的任何其他方式存在。
