Apabila bekerja dengan Python dan SQL, adalah perkara biasa untuk menghadapi keperluan untuk melaksanakan pertanyaan SQL yang disimpan dalam skrip luaran. Proses ini melibatkan membaca skrip, membahagikannya kepada pertanyaan individu dan melaksanakannya satu demi satu.
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
Kod ini membaca skrip SQL dengan berkesan kepada rentetan, membelah ia ke dalam perintah individu, dan melaksanakannya menggunakan c.execute(). Walau bagaimanapun, baki kod dalam coretan yang disediakan tidak lengkap dan perlu diubah suai untuk mengendalikan pertanyaan khusus jadual.
Kod tiada langkah di mana ia melaksanakan jadual -pertanyaan khusus. Untuk melakukan ini, anda boleh mengubah suai kod seperti berikut:
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()
Kod ini akan melingkari nama jadual dan melaksanakan pertanyaan yang ditentukan untuk setiap jadual. Ia kemudiannya memformat dan mencetak butiran jadual, nama lajur dan data baris.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Pertanyaan SQL daripada Skrip Luaran dalam Python dan Mengendalikan Pertanyaan Khusus Jadual?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!