首页 > 数据库 > mysql教程 > 如何在Python中执行外部SQL查询(包括非建表查询)?

如何在Python中执行外部SQL查询(包括非建表查询)?

Patricia Arquette
发布: 2024-12-28 02:35:08
原创
841 人浏览过

How to Execute External SQL Queries (Including Non-Table Creation Queries) in Python?

在 Python 中读取外部 SQL 脚本

问题:如何从 Python 脚本中执行外部 SQL 查询,尤其是在处理非表创建时查询?

说明:

要在 Python 中运行 SQL 命令,可以使用 sqlite3 模块。该模块提供了 SQLite 数据库管理系统的接口。要读取外部 SQL 脚本,可以按照以下步骤操作:

  1. 打开并读取文件:打开 SQL 文件并将其内容读入字符串。
  2. 拆分命令: 将字符串拆分为单个 SQL 命令的列表,用;.
  3. 执行命令:遍历命令列表,并使用光标对象的 c.execute(command) 方法一一执行。

代码示例:

import sqlite3

# Open the database connection
conn = sqlite3.connect('database.db')
c = conn.cursor()

# Read the SQL file
with open('external_sql.sql', 'r') as f:
    sql_file = f.read()

# Split the commands
sql_commands = sql_file.split(';')

# Execute the commands
for command in sql_commands:
    try:
        c.execute(command)
    except sqlite3.OperationalError as e:
        print(f"Command skipped: {e}")

# Commit the changes and close the connection
conn.commit()
c.close()
conn.close()
登录后复制

特定查询:

您提供的 SQL 脚本中的查询 1.1 和 1.2 是非建表查询。要执行它们,您可以直接使用 c.execute 方法而不是 SELECT * 查询:

# Query 1.1
result = c.execute(
    """
    SELECT ANAME,zookeepid
    FROM ANIMAL, HANDLES
    WHERE AID=ANIMALID;
    """
)

# Get the results
rows = result.fetchall()

# Print the results
print("Query 1.1:")
for row in rows:
    print(row)

# Query 1.2
result = c.execute(
    """
    SELECT ZNAME, SUM(TIMETOFEED)
    FROM ZOOKEEPER, ANIMAL, HANDLES
    WHERE AID=ANIMALID AND ZOOKEEPID=ZID
    GROUP BY zookeeper.zname;
    """
)

# Get the results
rows = result.fetchall()

# Print the results
print("Query 1.2:")
for row in rows:
    print(row)
登录后复制

以上是如何在Python中执行外部SQL查询(包括非建表查询)?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板