2015-07-01 8 views
2

Я пытаюсь заставить SQLAlchemy добавить комментарий к каждому запросу, который я отправляю.SQLAlchemy добавить комментарий к каждому запросу

Я знаю, что из документации я могу сделать что-то вроде этого:

from sqlalchemy.sql.expression import Insert 

@compiles(Insert) 
def prefix_inserts(insert, compiler, **kw): 
    return compiler.visit_insert(insert.prefix_with("/* comment */"), **kw) 

Но я не могу понять, как я могу сделать это для каждого запроса, независимо от того, какого типа, без необходимости перечислять каждый один в декораторе compiles.

ответ

3

Я бы использовал события. Существует пример in SQLAlchemy documentation:

from sqlalchemy.engine import Engine 
from sqlalchemy import event 

@event.listens_for(Engine, "before_cursor_execute", retval=True) 
def comment_sql_calls(conn, cursor, statement, parameters, 
            context, executemany): 
    statement = statement + " -- some comment" 
    return statement, parameters