2016-09-23 1 views
1

あなたはこのようなクエリを行う場合は、次のSQLAlchemy - Queryオブジェクトが指定されている場合、制限が既に適用されているかどうかを判断できますか?

models.Article.query.limit(5).limit(10) 

制限は、実際に10になりますが、5が上書きされます。

Queryに制限を適用するコードがありますが、まだ適用されていないコードがあります。 if 'LIMIT' in str(query):のような制限がすでにあるかどうかを判断する方法はありますか?私が理解から

答えて

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がQUEの内側にあるかどうかを確認"limit"が誤ってカラム/テーブル名の一部として使用されたり、リテラル "リミット"として使用されたり、特別な意味を持つ以外は他の方法で存在すると、簡単に失敗する可能性があります。

関連する問題