You need to enable JavaScript to run this app. pandas导入Excel数据到SQLite时如何将管道符列转嵌套列表存储
优惠活动
大模型
产品
解决方案
定价
更多

pandas导入Excel数据到SQLite时如何将管道符列转嵌套列表存储

调整方案

预处理逻辑

读取Excel后,先对B、C、D三列做格式转换:将单元格内用管道符|分隔的多个取值,拼接为[['值1'],['值2']]格式的字符串,其余列保持原样直接写入SQLite。

修改后的完整代码

def on_pushButton_import_pressed(self):
    '''import eamena excel file into HFF System'''
    conn = Connection()
    conn_str = conn.conn_str()

    try:
        EXCEL_FILE_NAME = self.lineEdit_path_excel.text()
        wb = pd.read_excel(EXCEL_FILE_NAME, skiprows=2)

        # 新增:需要做格式转换的目标列
        convert_cols = ['B', 'C', 'D']
        # 定义单元格格式转换规则
        def format_cell(val):
            # 先处理空单元格场景
            if pd.isna(val):
                return ""
            # 拆分管道符分隔的取值,过滤空内容、去除前后空白
            items = [i.strip() for i in str(val).split('|') if i.strip()]
            # 拼接为要求的嵌套列表字符串格式
            return f"[{', '.join([f"['{item}']" for item in items])}]"
        
        # 对目标列批量应用转换规则
        wb[convert_cols] = wb[convert_cols].applymap(format_cell)

        wb.to_sql('eamena_table', conn_str, if_exists='append', index=False)
    except Exception as e:
        QMessageBox.warning(self, "Error", str(e), QMessageBox.Ok)

补充说明

  • 自动兼容纯单值单元格场景(比如B列的ee会直接转为[['ee']],完全匹配示例要求)
  • 空单元格会自动转为空字符串存储,不会生成[['nan']]这类异常值
  • 如果单元格内容本身包含单引号,可调整转换规则避免SQL语法冲突:把f"['{item}']"改为f"['{item.replace("'", "''")}']",符合SQLite的字符串转义规范
  • 原有Excel读取参数、数据库连接逻辑完全保留,不需要修改其他业务代码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.26 11:27:08