如果你这样做一个查询:
models.Article.query.limit(5).limit(10)
限制实际上是10,5被覆盖。
我有一些代码想要对Query
应用限制,但仅限于尚未应用的限制。有没有办法确定是否已经存在限制,短于if 'LIMIT' in str(query):
?
答案 0 :(得分:6)
根据我的理解,您可以检查是否存在_limit
私有属性集:
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
是否在查询语句中,但如果"限制"被意外地用作列/表名的一部分或作为文字"限制"或以任何其他方式存在,除非具有特殊含义。