혼란:
외부 파일에서 SQL 쿼리를 실행할 때 일부 개발자는 선으로 인해 혼란스러워지다 like:
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!