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

如何在数据库记录中追加pickle格式的numpy数组

解决数据库中追加Pickle格式Numpy数组的问题

要实现追加而非替换,需要先读取旧数据、拼接新数组后再写入,具体步骤如下:

  • 第一步:查询并反序列化旧数组
    从数据库中取出目标记录已有的array_data字段,用pickle.loads反序列化为numpy数组。如果是首次写入(旧数据为空),直接使用新数组即可。

  • 第二步:拼接新旧数组
    因为是逐列接收的图像,用numpy的hstack(或concatenate指定axis=1)横向拼接新旧数组,模拟逐列追加的效果。

  • 第三步:序列化并更新数据库
    将拼接后的数组重新用pickle.dumps序列化,再执行UPDATE语句写入数据库。

完整代码示例:

import numpy as np
import pickle

# 查询旧数据
db.cursor.execute("SELECT array_data FROM captures WHERE id=%s", (self.target_id,))
old_data = db.cursor.fetchone()

if old_data and old_data[0]:
    # 反序列化旧数组
    old_arr = pickle.loads(old_data[0])
    # 横向拼接新旧数组(对应逐列追加图像)
    combined_arr = np.hstack((old_arr, arr1))
else:
    # 无旧数据时直接使用新数组
    combined_arr = arr1

# 更新数据库
db.cursor.execute("UPDATE captures SET array_data=%s WHERE id=%s", 
                  (pickle.dumps(combined_arr), self.target_id))
db.conn.commit()

注意事项:

  • 确保已导入numpy和pickle库
  • 如果是三维图像数组(含通道维度),需根据实际结构调整拼接的axis参数
  • 若array_data字段允许为空,必须做好空值判断,避免反序列化报错

内容的提问来源于stack exchange,提问作者md.119

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 04:52:07