Seite 1 von 1

(gelöst)sqlalchemie ist zu gescwätzig

Verfasst: Donnerstag 11. September 2008, 13:52
von Wh1sper
Moin, ich habe gerade mal ein wenig Zeit und spiele mit sqlalchemie rum.
Ich verwendete das Tutorial http://www.rmunn.com/sqlalchemy-tutorial/tutorial.html
Wenn ich eine vorhandene Table Struktur im Programm haben will, dann mache ich das so:

Code: Alles auswählen

print "Debug: Tabelle einheiten"
einheiten = Table('Einheiten',metadata, autoload=True)
print "Debug: Tabelle Ende "
Debug: Tabelle einheiten
2008-09-11 14:46:42,859 INFO sqlalchemy.engine.base.Engine.0x..ac PRAGMA table_info("Einheiten")
2008-09-11 14:46:42,859 INFO sqlalchemy.engine.base.Engine.0x..ac {}
2008-09-11 14:46:42,860 INFO sqlalchemy.engine.base.Engine.0x..ac PRAGMA foreign_key_list("Einheiten")
2008-09-11 14:46:42,860 INFO sqlalchemy.engine.base.Engine.0x..ac {}
2008-09-11 14:46:42,860 INFO sqlalchemy.engine.base.Engine.0x..ac PRAGMA index_list("Einheiten")
2008-09-11 14:46:42,860 INFO sqlalchemy.engine.base.Engine.0x..ac {}
Debug: Tabelle Ende
Warum bekomme ich die Info Zeilen? Kann man das abschalten? Ich sehe den Wald vor lauter Bäumen nicht

Verfasst: Donnerstag 11. September 2008, 15:18
von Leonidas
Kannst du mal den gesamten Code posten? Momentan würde ich sagen, dass du dazu einfach im ``logging``-Modul den Loglevel höher einstellen solltest.

Letztendlich würde ich wohl das Tutorial nicht nutzen, es zeigt Stern-Imports die man sich nicht angewöhnen sollte und ist wohl auf dem Stand von SQLAlchemy 0.2; aktuell ist 0.4.7 und bald kommt 0.5.

Verfasst: Freitag 12. September 2008, 09:39
von Wh1sper

Code: Alles auswählen

#!/usr/bin/python
from sqlalchemy import *

db = create_engine('sqlite:///rezepte.db')

db.echo = True  

metadata = MetaData(db)


rezepte = Table('Rezepte', metadata, autoload=True)
zutaten = Table('Zutaten', metadata, autoload=True)
print "Debug: Tabelle einheiten"
einheiten = Table('Einheiten',metadata, autoload=True)
print "Debug: Tabelle Ende "
# Einfach alles Ausgeben
def run(stmt):
    rs = stmt.execute()
    for row in rs:
    	print row
####

s = rezepte.select(rezepte.c.id == 1)
run(s)

s = zutaten.select(zutaten.c.rez_id== 1)
run(s)
Wie gesagt, es funktioniert, nur zuviel INFO.
Wie funktioniert das mit dem Loglevel?
Und hast du einen anderen Tipp für eine Übersicht über sqlalchemy anhand von ein paar Beispielen'?

Verfasst: Freitag 12. September 2008, 10:24
von Leonidas
Hmm. Schreib das mal neu, aber nutze diesmal das ORM Tutorial. Welche SQLAlchemy-Version ist das? Das kommt mir nämlich sehr wie irgendwelche Debug-Informationen.

Wenn es gar nicht anders geht (und du das Echo abgeschaltet hast), dann kannst du die Logschwelle erhöhen.

Code: Alles auswählen

import logging
logging.basicConfig(level=logging.DEBUG)

Verfasst: Dienstag 16. September 2008, 11:46
von Wh1sper
Jo, danke, ich hab's gefunden db.echo=True, wars.
Und ich nehme nun die Doku zu 0.4, wie du empfohlen hast.
Ps: Sorry für lange Antwortzeit, ich war anderweitig beschäftigt.