2011-01-14 8 views
1

Ich verwende SQLAlchemy 0.6.3 mit Pylonen 1.0 und meine sqlalchemy.log Datei durch „BEGIN“ verschmutzt wird ruft:BEGIN Anruf verschmutzen SQLAlchemy Protokolle

2011-01-14 10:15:17 SELECT /* redacted */ 
2011-01-14 10:15:22 BEGIN 
2011-01-14 10:15:27 BEGIN 
2011-01-14 10:15:32 BEGIN 
2011-01-14 10:15:37 BEGIN 
2011-01-14 10:15:42 BEGIN 
2011-01-14 10:15:47 BEGIN 
2011-01-14 10:15:52 BEGIN 
2011-01-14 10:15:53 SELECT /* redacted */ 
2011-01-14 10:16:33 BEGIN 
2011-01-14 10:16:35 BEGIN 
2011-01-14 10:16:42 BEGIN 
2011-01-14 10:16:49 BEGIN 
2011-01-14 10:16:52 BEGIN 

Das ist wirklich ärgerlich ist, und bekommt in der Art und Weise zu sehen, dass SQLQLechemy nützlichen SQL-Code ausführt. Gibt es trotzdem, um zu verhindern, dass SQLAlchemy diese ausdruckt oder gar ausführt? Sie scheinen nichts zu tun.

Antwort

0

Ein Ansatz wäre, herauszufinden, warum SQLAlchemy diese tut, und sehen, ob sie vermieden werden können. Eine andere wäre, sie auf Protokollierungsebene zu filtern. Pythons logging Modul unterstützt Filter.

Hier ist ein schnelles Stand-alone Beispiel angepasst von this example from Python docs:

import logging 

class BeginFilter(logging.Filter): 
    """ This is a filter which drops BEGIN statements. """ 

    def filter(self, record): 
     return False if record.msg == "BEGIN" else True 

if __name__ == "__main__": 
    logging.basicConfig(level=logging.DEBUG, 
         format="%(asctime)-15s %(name)-5s %(levelname)-8s %(message)s") 
    a1 = logging.getLogger("a.b.c") 

    f = BeginFilter() 
    a1.addFilter(f) 

    a1.debug("SELECT ...") 
    a1.debug("BEGIN") 
    a1.debug("BEGIN") 
    a1.debug("BEGIN") 
    a1.debug("BEGIN") 
    a1.debug("SELECT ...") 
    a1.debug("BEGIN")