You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python函数结合for循环从SQL数据库创建多个DataFrame?

解决Python遍历SQL语句创建多个DataFrame的问题

先梳理你当前代码的核心问题:

  • 循环内执行SQL时错误传入整个语句列表SQLscript,应该使用当前循环的单个SQL语句
  • 函数内提前return会导致循环仅执行一次就退出,且data变量未正确赋值
  • 试图直接修改传入的D_name列表元素无法实现,Python中不能通过参数赋值直接改变外部变量
  • 未正确管理游标资源

以下是修正后的完整实现:

修正后的函数代码

import pandas as pd

def database_create(SQLscript):
    df_list = []
    cur = con.cursor()
    try:
        # 遍历每个SQL语句
        for sql in SQLscript:
            cur.execute(sql)
            # 提取结果列名
            columns = [desc[0] for desc in cur.description]
            # 创建DataFrame并加入列表
            df = pd.DataFrame(cur.fetchall(), columns=columns)
            df_list.append(df)
    finally:
        # 确保游标关闭,避免资源泄漏
        cur.close()
    # 返回所有创建好的DataFrame组成的列表
    return df_list

调用示例

# 定义你的SQL语句
x = """SELECT * FROM your_table_1"""
y = """SELECT * FROM your_table_2"""
sqllist = [x, y]

# 调用函数并将返回的DataFrame列表解包到变量
data1, data2 = database_create(sqllist)

关键说明

  1. 函数不再依赖全局变量,直接返回DataFrame列表,调用时通过解包赋值给目标变量,符合Python变量传递逻辑
  2. 循环中逐个执行SQL语句,将每个结果转为DataFrame后存入列表,确保所有语句都能执行
  3. 使用try-finally块保证游标最终关闭,避免数据库连接资源浪费
  4. 不需要传入data_names参数,直接通过返回值接收结果更清晰

内容的提问来源于stack exchange,提问作者MrWednesday

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 07:45:38