Verwirrung:
Beim Ausführen von SQL-Abfragen aus einer externen Datei kann es bei einigen Entwicklern vorkommen Lassen Sie sich durch Zeilen verwirren wie:
result = c.execute("SELECT * FROM %s;" % table);
Erklärung:
Die Zeichenfolgenformatierung in Python ermöglicht es uns, Platzhalter (%s) dynamisch durch Werte zu ersetzen. In diesem Fall wird %s durch den Wert der Tabellenvariablen ersetzt, bei dem es sich um eine Zeichenfolge handelt, die den Tabellennamen darstellt. Wenn die Tabelle also „Tier“ ist, lautet die Abfrage „SELECT * FROM Animal;“.
Verwendung des bereitgestellten Codes:
Der bereitgestellte Python-Code enthält eine Funktion executeScriptsFromFile, mit dem alle SQL-Befehle in einer externen Datei ausgeführt werden können.
def executeScriptsFromFile(filename): with open(filename, 'r') as fd: sqlFile = fd.read() sqlCommands = sqlFile.split(';') for command in sqlCommands: try: c.execute(command) except OperationalError as msg: print("Command skipped: ", msg)
Mit dieser Funktion können Sie die SQL-Abfragen ausführen in Ihrer zookeeper.sql-Datei:
executeScriptsFromFile('zookeeper.sql')
Abfragen 1.1 und 1.2:
Die Abfragen 1.1 und 1.2 sind bereits in der zookeeper.sql-Datei enthalten. Der obige Code führt sie aus, wenn die Datei geladen wird.
Vollständiger Code:
Durch die Kombination der Funktion „executeScriptsFromFile“ und des Tabellenschleifencodes kann Ihr vollständiger Python-Code vereinfacht werden wie folgt:
import sqlite3 from sqlite3 import OperationalError conn = sqlite3.connect('csc455_HW3.db') c = conn.cursor() executeScriptsFromFile('zookeeper.sql') for table in ['ZooKeeper', 'Animal', 'Handles']: result = c.execute("SELECT * FROM %s;" % table) rows = result.fetchall() print("\n--- TABLE ", table, "\n") for desc in result.description: print(desc[0].rjust(22, ' '), end=',') print() # End the line with column names for row in rows: for value in row: print(str(value).rjust(22, ' ')) print() c.close() conn.close()
Das obige ist der detaillierte Inhalt vonWie kann ich SQL-Abfragen aus einer externen Datei in Python effizient ausführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!