auf der Dokumentations-Seite von SQLAlchemy wird unter dem Kapitel Getting a Session beschrieben, wie man eine Session erhält. Alles super, nur was mich etwas nervt, ist, dass immer alles auf Modulebene erklärt wird. Das Ganze in Funktionen unterzubringen soll ja kein Problem sein. Aber mich beschäftigt folgendes Szenario:
Bei einer Arbeit mit MySQL ist es überlicherweise so, dass man sich erst anmeldet, und später mit den Datensätzen arbeitet. Selten, dass man seine Anmelde-Zugangsdaten durchgibt und gleich arbeiten geht. Dazu soll ja der Sessionmaker unter anderem gut sein.
Nun habe ich folgendes konzipiert und hätte eure Meinung:
Code: Alles auswählen
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
SESSION = ''
def connect_to_database()
# an Engine, which the Session will use for connection
# resources
some_engine = create_engine('postgresql://scott:tiger@localhost/')
# create a configured "Session" class
Session = sessionmaker(bind=some_engine)
# create a Session
SESSION = Session()
def insert_data():
# work with sess
myobject = MyObject('foo', 'bar')
SESSION.add(myobject)
SESSION.commit()
Wäre das so in Ordnung? Mir ging es bei der Überlegung darum, wie ich an die Session() komme. Man könnte ja Session() per return zurückgeben lassen, aber das will ich ja nicht. Denn wie ich bereits beschrieb, ist es ja so, dass ich nach der Anmeldung nicht gleich sofort arbeiten möchte. Also, warum soll ich mir was zurückgeben lassen, wenn ich es nicht brauche? Als dachte ich mir, speichere ich das Session()-Objekt in die Variable SESSION. Und so kann ich beim Manipulieren der Datensätze getrost darauf zugreifen. Allerdings glaube ich, dass dieser Weg wenig elegant.
Also freue mich mich über eure Meinung.