Ich möchte eine allgemeine Möglichkeit, Spaltenbeschriftungen direkt aus den ausgewählten Spaltennamen zu generieren, und erinnere mich daran, dass das psycopg2-Modul von Python diese Funktion unterstützt.
136
Aus "Programming Python" von Mark Lutz:
curs.execute("Select * FROM people LIMIT 0")
colnames = [desc[0] for desc in curs.description]
curs.execute("SELECT * FROM people LIMIT 0")
information_schema
.curs.execute("Select userId FROM people") colnames = [desc[0] for desc in curs.description] assert colnames == ['userid']
Sie können auch einen Cursor erstellen, mit dem Sie Ihre Spalten anhand ihrer Namen referenzieren können (dies hat mich zunächst zu dieser Seite geführt):
quelle
Um die Spaltennamen in einer separaten Abfrage abzurufen , können Sie die Tabelle information_schema.columns abfragen.
Um Spaltennamen in derselben Abfrage wie Datenzeilen abzurufen , können Sie das Beschreibungsfeld des Cursors verwenden:
quelle
Wenn Sie ein benanntes Tupelobjekt aus der Datenbankabfrage haben möchten, können Sie das folgende Snippet verwenden:
Auf diese Weise können Sie auf Datensatzwerte zugreifen, als wären sie Klasseneigenschaften, d. H.
oder noch kürzer
quelle
Nach dem Ausführen der SQL-Abfrage schreiben Sie das folgende in 2.7 geschriebene Python-Skript
quelle
Ich habe festgestellt, dass Sie
cursor.fetchone()
nach der Abfrage verwenden müssen, um die Liste der Spalten incursor.description
(dh in[desc[0] for desc in curs.description]
) zu erhalten.quelle
Ich hatte auch ähnliche Probleme. Ich benutze einen einfachen Trick, um dies zu lösen. Angenommen, Sie haben Spaltennamen in einer Liste wie
Dann können Sie Folgendes tun
quelle
quelle
quelle