ホームページ >データベース >mysql チュートリアル >Python で外部ファイルから SQL クエリを効率的に実行するにはどうすればよいですか?
混乱:
外部ファイルから SQL クエリを実行する場合、一部の開発者は線で混乱する例:
result = c.execute("SELECT * FROM %s;" % table);
説明:
Python の文字列フォーマットを使用すると、プレースホルダー (%s) を値に動的に置き換えることができます。この場合、%s はテーブル名を表す文字列であるテーブル変数の値に置き換えられます。したがって、テーブルが「Animal」の場合、クエリは「SELECT * FROM Animal;」になります。
提供されたコードの使用:
提供された Python コードには関数が含まれています外部ファイル内のすべての SQL コマンドを実行するために使用できるexecuteScriptsFromFile。
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)
を使用できます。この関数は、zookeeper.sql ファイル内の SQL クエリを実行します:
executeScriptsFromFile('zookeeper.sql')
クエリ 1.1 および 1.2:
クエリ 1.1 と 1.2 は、すでにZookeeper.sql ファイル。上記のコードは、ファイルがロードされるときにそれらを実行します。
完全なコード:
executeScriptsFromFile 関数とテーブル ループ コードを組み合わせると、完全な Python コードを簡素化できます。以下のように:
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()
以上がPython で外部ファイルから SQL クエリを効率的に実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。