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

Python中如何在FOR循环内用IF判断SQL行条件并导出指定列到CSV

按品牌拆分保存CSV文件的修正方案

原代码存在的问题

  1. 每次循环都执行全表查询,数据库访问次数过多,效率极低
  2. 遍历QUERY的方式错误:for row in QUERY实际是遍历列名,而非数据行
  3. 品牌匹配逻辑错误:str(QUERY["BRAND"])==str(i)是将整个BRAND列转为字符串与当前品牌比较,而非逐行判断
  4. 行数据取值错误:row[A,B]的写法不符合Python语法,无法正确获取A、B列的值

推荐解决方案(高效简洁版)

利用Pandas的分组功能和内置CSV写入方法,一次性查询数据后按品牌拆分保存,大幅提升效率:

import pyodbc
import pandas as pd

# 数据库连接(需提前定义server/database/username/password变量)
cnxn = pyodbc.connect(f'DRIVER={{SQL Server}};SERVER={server};DATABASE={database};UID={username};PWD={password}')

# 一次性查询所有需要的数据
all_data = pd.read_sql_query("""
SELECT A, B, BRAND
FROM DATABASE 
""", cnxn)

# 定义文件保存路径(末尾加斜杠避免路径拼接错误)
ROUT = "my rout/"

# 按品牌分组并保存CSV
for brand, group in all_data.groupby('BRAND'):
    # 构造目标文件名
    file_name = f"{ROUT}NAME{brand}.csv"
    # 仅保留A、B列,保存为CSV(分隔符为;,不保存索引)
    group[['A', 'B']].to_csv(file_name, sep=';', index=False)

关键改进点

  • 减少数据库交互:仅执行1次全量查询,避免循环内重复访问数据库
  • 自动分组筛选:通过groupby('BRAND')直接按品牌拆分数据,无需手动判断
  • 简化写入逻辑:用Pandas的to_csv方法直接处理列选择、分隔符、索引等需求,代码更简洁易维护
  • 路径优化:用f-string拼接路径,且路径末尾加斜杠,避免出现folderNAME品牌.csv这类错误路径

手动遍历写入的修正版(兼容原代码思路)

如果坚持用手动遍历的方式写入,可参考以下修正后的代码:

import pyodbc
import csv
import pandas as pd

cnxn = pyodbc.connect(f'DRIVER={{SQL Server}};SERVER={server};DATABASE={database};UID={username};PWD={password}')

# 获取所有不重复的品牌(比GROUP BY更高效)
brands = pd.read_sql_query("""
SELECT DISTINCT BRAND
FROM DATABASE
""", cnxn)['BRAND'].tolist()

# 一次性查询全量数据
all_data = pd.read_sql_query("""
SELECT A, B, BRAND
FROM DATABASE 
""", cnxn)

ROUT = "my rout/"

for brand in brands:
    file_name = f"{ROUT}NAME{brand}.csv"
    # 筛选当前品牌的数据
    filtered_rows = all_data[all_data['BRAND'] == brand]
    
    with open(file_name, "w", newline='', encoding='utf-8') as f:
        wrtr = csv.writer(f, delimiter=';')
        # 写入表头(按需选择)
        wrtr.writerow(['A', 'B'])
        # 遍历筛选后的每行数据
        for _, row in filtered_rows.iterrows():
            wrtr.writerow([row['A'], row['B']])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 14:52:44