首页 >数据库 >mysql教程 >如何在Python中高效地从外部文件执行SQL查询?

如何在Python中高效地从外部文件执行SQL查询?

Susan Sarandon
Susan Sarandon原创
2024-12-29 22:35:10459浏览

How Can I Efficiently Execute SQL Queries from an External File in Python?

在 Python 中查询外部 SQL 文件

困惑:

从外部文件执行 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn