如何将MariaDB中BLOB形式的CSV数据读取为Pandas DataFrame
解决MariaDB中BLOB存储的CSV转独立Pandas DataFrame问题
问题分析
你的MariaDB中Data列以BLOB形式存储CSV文本,每个单元格对应一段CSV内容,目标是将每个单元格的内容转为独立的Pandas DataFrame。之前的代码错误在于:
- 使用
raw.to_string(index=False)将整个查询结果转为字符串,混了Name列和Data列的内容,导致无法正确解析CSV - BLOB读取后是字节对象,未解码为可处理的字符串
修正后的代码
import pandas as pd from io import StringIO # 读取数据库查询结果 raw = pd.read_sql_query(query, engine) # 用来存储每个单元格对应的独立DataFrame df_collection = [] # 遍历每一行,处理每个Data单元格的CSV内容 for _, row in raw.iterrows(): # 将BLOB字节数据解码为字符串,编码根据实际CSV调整(比如gbk) csv_content = row['Data'].decode('utf-8') # 用StringIO包装CSV字符串,再读取为DataFrame single_dataframe = pd.read_csv(StringIO(csv_content), sep=',') df_collection.append(single_dataframe) # 访问单个DataFrame:比如取第一个单元格的结果 df_collection[0]
关键说明
- BLOB解码:从数据库读出的BLOB是字节类型,必须用
decode()转为字符串,编码要和CSV文件的编码一致(常见utf-8、gbk) - 逐单元格处理:通过
iterrows()遍历每一行,单独提取每个Data单元格的内容,避免混合其他列的数据 - CSV解析:用
StringIO把字符串包装成类文件对象,让pd.read_csv可以正常解析CSV格式的内容
内容的提问来源于stack exchange,提问作者imad97
相关产品推荐
相关产品推荐

