Zugriff auf SQL-Ergebnisspaltenwerte anhand des Spaltennamens in Python
Wenn Sie mit einer beträchtlichen Anzahl von Spalten in einer Datenbank arbeiten und sich auf Spaltenindizes verlassen denn der Datenabruf kann umständlich werden. Dieser Artikel geht auf die Notwendigkeit eines intuitiveren Ansatzes ein, indem er eine Methode zum Abrufen von SQL-Ergebnisspaltenwerten mithilfe des Spaltennamens in Python vorstellt.
Lösung: Verwendung des DictCursor
Das MySQLdb-Modul von Python bietet die Klasse DictCursor, die den Abruf von SQL-Ergebnissen als Wörterbuch ermöglicht. Durch diese Technik entfällt die Notwendigkeit, Spaltenindizes vollständig zu verarbeiten:
import MySQLdb cursor = conn.cursor(MySQLdb.cursors.DictCursor) cursor.execute("SELECT name, category FROM animal") result_set = cursor.fetchall() for row in result_set: print("%s, %s" % (row["name"], row["category"]))
Zusätzliche Kompatibilität
Gemäß user1305650, Dieser Ansatz ist auch mit dem PyMySQL-Modul kompatibel. Um die Funktionalität sicherzustellen, verwenden Sie den folgenden Code:
import pymysql cursor = conn.cursor(pymysql.cursors.DictCursor) cursor.execute("SELECT name, category FROM animal") result_set = cursor.fetchall() for row in result_set: print("%s, %s" % (row["name"], row["category"]))
Durch die Übernahme der in diesem Artikel beschriebenen Techniken können Entwickler ihren Python-Code für SQL-Ergebnisse optimieren Abruf. Der DictCursor bietet eine bequeme und effiziente Methode für den Zugriff auf Daten nach Spaltennamen und verbessert so die Lesbarkeit und Wartbarkeit ihrer Skripte.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3