Autocommit bei SQLAlchemy?

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Ich habe mir mittlerweile einen Wolf gesucht, aber ich werde nicht richtig draus schlau. Aus einigen Gründen möchte ich sehr gerne Autocommits nutzen, wie ich sie von SQLObject gewohnt bin - geht aber scheinbar nicht.

Kann mir da wer genaueres zu sagen? Sind das technische oder festgelegte Einschränkungen? Ist sowas DB-spezifisch und wird daher vielleicht gar nicht von SA angeboten? Oder geht es doch irgendwie?

Sachdienliche Hinweise werden händeringend entgegen genommen :)
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Also ich denke man sollte immer auf autocommit verzichten. Ansonsten kann man nie Transaktionen realisieren.

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Ich würde auf autocommits auch grundsätzlich verzichten. Es gibt doch genügend andere Möglichkeiten, komfortabel zu arbeiten.

Pocoo nutzt z.B. Transaktionsfunktionen, so wie diese hier:

Code: Alles auswählen

        def do(con):
            result = con.execute(users.insert(),
            (...)
            )
            return whatever

        res = engine.transaction(do)
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

jens hat geschrieben:Also ich denke man sollte immer auf autocommit verzichten. Ansonsten kann man nie Transaktionen realisieren.
Huh? Nee. Im Falle von SQLObject habe ich immer autocommits und kann diese bei Bedarf aussetzen (Quelle):

Code: Alles auswählen

conn = DBConnection.PostgresConnection('yada')
trans = conn.transaction()
p = Person.get(1, trans)
p.firstName = 'Bob'
trans.commit()
p.firstName = 'Billy'
trans.rollback()
Was mich eben stört ist, dass ich jetzt neben den eigentlichen Model-Klassen auch noch ein Connection-/Context-/Session-/sonstwas-Objekt importieren und mitschleppen muss. Gibt's da noch weitere schicke Lösungsvorschläge?
Antworten