Erkennen, ob zum abrufen von psycopg2 cursor oder nicht?

Let ' s sagen, wenn ich folgenden Befehl ausführen.

insert into hello (username) values ('me')

und ich lief wie

cursor.fetchall()

Bekomme ich die folgende Fehlermeldung

psycopg2.ProgrammingError: no results to fetch

Wie kann ich erkennen, ob der Aufruf von fetchall() oder nicht ohne Prüfung der Abfrage auf "einfügen" oder "Auswahl"?

Dank.

  • ist die erste Zeile sieht so aus cursor.execute("insert into hello (username) values ('me')")?
  • Chris B ist richtig, aber es gibt eine Allgemeine Besorgnis, dass eine beliebige Abfrage (könnte insert oder select oder etwas anderes) hat dies bis weit in den code, ohne zu wissen, welche Art von Abfrage es ist. Wo ist die SQL eingegeben werden kann? Sind Sie ein Schutz gegen SQL-Injection? Ich empfehle, dass der code sollte sich bewusst sein, von der Art der Abfrage bearbeitet und haben verschiedene code-Pfade für den Umgang inserts vs selects, idealerweise mit einem bekannten Satz von Abfragen - eventuell gespeicherte Prozeduren - und, abgesehen von dem Fall, wo eine select-Abfrage gibt keine Beschreibung, die auf diese Frage nicht ein Problem sein.
InformationsquelleAutor moeseth | 2016-07-29
Schreibe einen Kommentar