如何用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)
关键说明
- 函数不再依赖全局变量,直接返回DataFrame列表,调用时通过解包赋值给目标变量,符合Python变量传递逻辑
- 循环中逐个执行SQL语句,将每个结果转为DataFrame后存入列表,确保所有语句都能执行
- 使用
try-finally块保证游标最终关闭,避免数据库连接资源浪费 - 不需要传入
data_names参数,直接通过返回值接收结果更清晰
内容的提问来源于stack exchange,提问作者MrWednesday
相关产品推荐
相关产品推荐

