2017-03-06 3 views
0

私は、それらをデバッグしたいイベントで発生したすべてのクエリをログに記録するか、後でその上でExplainプランを実行します。例えばstmt.compileでクエリを出力するときにSQLAlchemy警告を抑止する方法?

from sqlalchemy import select 
from sqlalchemy.dialect import oracle 
queries = {} 
# ... 
sel = select([foo.c.id, foo.c.bar]) 
queries['foo query'] = sel.compile(dialect=oracle.dialect(), 
            compile_kwargs={'literal_binds': True}) 
results = conn.execute(select) 

これは、常に次の警告を出力し終わる:

 
SAWarning: Textual column expression 'id' should be explicitly declared 
with text('location'), or use column('location') for more specificity (this 
warning may be suppressed after 10 occurrences) 
if guess_is_literal else "column" 

は、これらの警告を抑制するための方法はありますか?特に、グローバル抑制とは対照的に、クエリを記録/印刷するこの非常に特殊なケースでは、これらを抑制したいだけです。

答えて

0

あなたがそうのようなPythonの2.7でSQL錬金術の警告メッセージを抑制することができます。

import warnings 
from sqlalchemy import exc as sa_exc 

with warnings.catch_warnings(): 
    warnings.simplefilter("ignore", category=sa_exc.SAWarning) 
    results = query.execute() 
関連する問題