2012-03-26 13 views
1

Ich bin ein Anfänger bei Python. Wir verwenden diesen Code, um SQL-Befehle auszuführen.vorbereitete Anweisungen mit psycopg

cur.execute("INSERT INTO test (num, data) VALUES (%s, %s)", (100, "abcdef")) 

Ich frage mich, ist diese vorbereitete Aussage oder nur eine Clientseite zitiert?

+0

Siehe hier: http://stackoverflow.com/questions/6775497/psycopg-get- formatiert-sql-statt-ausgeführt – socketpair

Antwort

10

Nein, tut es nicht, nicht für psycopg2 mindestens. Das "Vorbereiten" in den Dokumenten bezieht sich auf eine "VORBEREITEN-TRANSAKTION", die sich vollständig von einer vorbereiteten Anweisung unterscheidet.

Sie können eine vorbereitete Anweisung emulieren, indem Sie die Methoden überschreiben oder zusätzliche Anweisungen ausführen. Siehe: An example of psycopg2 cursor supporting prepared statements

Bitte sehen: relevant blog entry for psycopg.

Weitere Informationen:

http://www.postgresql.org/docs/9.2/static/sql-prepare.html
http://www.postgresql.org/docs/current/static/sql-prepare-transaction.html

-2

Gemäß the docs wird die Execute-Methode "Vorbereiten und Ausführen einer Datenbankoperation (Abfrage oder Befehl).". Also ja, es ist eine vorbereitete Aussage.

+8

Eigentlich tut es derzeit nicht. Das "Prepare" in dieser Dokumentation bezieht sich auf einen Aufruf "PREPARE TRANSACTION", der für zweiphasiges Commit und nicht für eine vorkompilierte SQL-Anweisung erforderlich ist. – Brian