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

如何用Python基于数据集生成按2条语句拆分的SQL文件?

按行分组生成SQL文件的Python实现方案

需求说明

  • 现有如下数据集:
    Col ACol BCol C
    NananaTeacher123456
    PopopoStudent232322
    CececeTeacher455433
    LalalaStudent231231
    PoaslsTeacher235433
    LililiTeacher723543
  • 生成多个.sql文件,每个文件包含2条格式为SELECT function({0},{1},{2})的SQL语句,每条语句对应数据集的一行数据
  • 按顺序每2行存入一个SQL文件,文件名格式为FUNCTION_1.sql、FUNCTION_2.sql等

原代码存在的问题

  1. 文件名定义错误:未用字符串包裹,正确写法应为file_name = "FUNCTION_{}.sql"
  2. 缩进错误:内层for循环未缩进,不符合Python代码块规则
  3. 行索引逻辑错误:直接使用y作为索引会重复读取前2行,需根据当前文件序号计算对应行的位置
  4. DataFrame索引方式错误:df[y, "COL B"]不是合法的索引方式,应使用df.loc或df.iloc
  5. SQL语句格式缺失:生成的语句缺少结尾分号和换行,会导致SQL语法错误

修正后的完整代码

import pandas as pd

# 加载数据集(如果已有df可跳过此部分)
data = [
    ["Nanana", "Teacher", 123456],
    ["Popopo", "Student", 232322],
    ["Cecece", "Teacher", 455433],
    ["Lalala", "Student", 231231],
    ["Poasls", "Teacher", 235433],
    ["Lilili", "Teacher", 723543]
]
df = pd.DataFrame(data, columns=["Col A", "Col B", "Col C"])

file_name = "FUNCTION_{}.sql"
query_template = "SELECT function('{0}', '{1}', {2});\n"

# 计算需要生成的文件数量,兼容行数为奇数的情况
total_files = (len(df) + 1) // 2

for file_num in range(total_files):
    # 确定当前文件对应的行范围
    start_row = file_num * 2
    end_row = start_row + 2
    current_rows = df.iloc[start_row:end_row]
    
    with open(file_name.format(file_num + 1), 'w') as f:
        for _, row in current_rows.iterrows():
            # 格式化SQL语句,字符串字段添加单引号保证语法正确
            sql_query = query_template.format(row["Col A"], row["Col B"], row["Col C"])
            f.write(sql_query)

代码说明

  • 用(len(df) + 1) // 2计算文件数量,即使数据集行数为奇数也能正确处理剩余行
  • 通过df.iloc[start_row:end_row]精准定位每个文件对应的行组,避免重复读取数据
  • 为字符串类型字段添加单引号,符合SQL语法规范
  • 每条语句结尾添加分号和换行,提升SQL文件的可读性和合法性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 15:45:42