Bei der Arbeit mit Python und SQL kommt es häufig vor, dass in einem externen Skript gespeicherte SQL-Abfragen ausgeführt werden müssen. Bei diesem Vorgang wird das Skript gelesen, in einzelne Abfragen zerlegt und einzeln ausgeführt.
import sqlite3 from sqlite3 import OperationalError conn = sqlite3.connect('csc455_HW3.db') c = conn.cursor() # Open and read the file as a single buffer fd = open('ZooDatabase.sql', 'r') sqlFile = fd.read() fd.close() # all SQL commands (split on ';') sqlCommands = sqlFile.split(';') # Execute every command from the input file for command in sqlCommands: # This will skip and report errors # For example, if the tables do not yet exist, this will skip over # the DROP TABLE commands try: c.execute(command) except OperationalError, msg: print "Command skipped: ", msg
Dieser Code liest das SQL-Skript effektiv in einen String und teilt ihn auf wandelt es in einzelne Befehle um und führt diese mit c.execute() aus. Der verbleibende Code im bereitgestellten Snippet ist jedoch unvollständig und muss geändert werden, um tabellenspezifische Abfragen zu verarbeiten.
Dem Code fehlt der Schritt, in dem er die Tabelle ausführt -spezifische Abfragen. Dazu können Sie den Code wie folgt ändern:
for table in ['ZooKeeper', 'Animal', 'Handles']: result = c.execute("SELECT ANAME,zookeepid FROM ANIMAL, HANDLES WHERE AID=ANIMALID;") rows = result.fetchall() print("\n--- TABLE", table, "\n") for desc in result.description: print(desc[0].rjust(22, ' '), end=", ") # Print column names print() for row in rows: for value in row: print(str(value).rjust(22, ' '), end=", ") # Print each value print()
Dieser Code durchläuft die Tabellennamen und führt die angegebenen Abfragen für jede Tabelle aus. Anschließend werden die Tabellendetails, Spaltennamen und Zeilendaten formatiert und gedruckt.
Das obige ist der detaillierte Inhalt vonWie kann ich SQL-Abfragen aus einem externen Skript in Python ausführen und tabellenspezifische Abfragen verarbeiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!