2017-03-06 1 views
0

Ich möchte alle Abfragen protokollieren, die in dem Ereignis auftreten, das ich debuggen oder später ausführen möchte.So unterdrücken Sie SQLAlchemy Warnungen beim Drucken von Abfragen mit stmt.compile?

Zum Beispiel:

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) 

Diese immer endet die folgenden Warnungen ausgibt:

 
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" 

Gibt es eine Möglichkeit, diese Warnungen zu unterdrücken? Bemerkenswerterweise möchte ich sie nur in diesem speziellen Fall unterdrücken, in dem die Abfrage protokolliert/gedruckt wird, im Gegensatz zu einer globalen Unterdrückung.

Antwort

0

Sie können SQL Alchemy Warnungen nicht in Python 2.7 zu unterdrücken, wie so:

import warnings 
from sqlalchemy import exc as sa_exc 

with warnings.catch_warnings(): 
    warnings.simplefilter("ignore", category=sa_exc.SAWarning) 
    results = query.execute() 
Verwandte Themen