Führen Sie eine vorbereitete Anweisung in sqlalchemy

Habe ich zu laufen 40K Anforderungen gegen einen username (Benutzername):

SELECT * from user WHERE login = :login

Ist es langsam, so dass ich dachte, ich würde nur verwenden Sie eine vorbereitete Anweisung.

Also ich weiß

e = sqlalchemy.create_engine(...)
c = e.connect()
c.execute("PREPARE userinfo(text) AS SELECT * from user WHERE login = $1")
r = c.execute("EXECUTE userinfo('bob')")
for x in r:
    do_foo()

Aber ich habe einen:

InterfaceError: (InterfaceError) cursor already closed None None

Ich verstehe nicht, warum ich eine Ausnahme

  • Für mich funktioniert. Welche version Sie verwenden, es war eine leichte Veränderung in cursor-handling vor 0.5 (r5236), das konnte haben das Problem behoben. Aber auch wenn es funktioniert, ich bezweifle stark mit der Analyse und Planung overhead ist groß genug, um es wirklich egal. Stapelverarbeitung Dinge zusammen, wie unten vorgeschlagen.
InformationsquelleAutor | 2009-06-29
Schreibe einen Kommentar