困惑:
从外部文件执行 SQL 查询时,一些开发人员可能会遇到以下问题:对线条感到困惑像:
result = c.execute("SELECT * FROM %s;" % table);
解释:
Python 中的字符串格式允许我们动态地用值替换占位符 (%s)。在这种情况下,%s 被表变量的值替换,该值是表示表名称的字符串。因此,如果表是“Animal”,则查询将变为“SELECT * FROM Animal;”。
使用提供的代码:
提供的 Python 代码包含一个函数executeScriptsFromFile 可用于执行外部文件中的所有 SQL 命令。
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中文网其他相关文章!