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

如何在Django模型中整体存储大尺寸浮点矩阵并保存至SQLite

Django矩阵整体存储解决方案

以下是两种无需拆分矩阵、可直接整体存储浮点型矩阵的可行方案,均适配SQLite数据库:

方案1:使用内置JSONField(优先推荐,适配Django 3.1及以上版本)

Django 3.1及以上版本内置的JSONField原生支持嵌套列表、浮点型数据的自动序列化/反序列化,无需额外处理就能直接存储整个矩阵。

修改models.py

from django.db import models

class Cell(models.Model):
    content = models.JSONField()

修改views.py

不需要对矩阵做打平、转置操作,直接将整个二维列表存入字段即可:

from .models import Cell

new_file = [[8.2, 14.2, -6.1],
           [12.6,7.0,4.7], 
           [-1.1,3.6,21.1]]

def file_list(request):
    # 直接传递完整矩阵即可,不需要额外处理
    extract_data = Cell(content = new_file)
    extract_data.save()

读取使用

从数据库中查询到记录后,直接访问content属性就能得到原始的嵌套浮点列表,可直接用于数值计算:

cell = Cell.objects.first()
mat = cell.content # 输出就是[[8.2, 14.2, -6.1], [12.6,7.0,4.7], [-1.1,3.6,21.1]]

方案2:TextField + 手动JSON序列化(适配Django 3.1以下版本)

如果使用的Django版本低于3.1没有内置JSONField,可以手动将矩阵序列化为JSON字符串存入TextField,读取时再反序列化即可。

修改models.py

from django.db import models

class Cell(models.Model):
    content = models.TextField()

存储逻辑

import json
from .models import Cell

new_file = [[8.2, 14.2, -6.1],
           [12.6,7.0,4.7], 
           [-1.1,3.6,21.1]]

def file_list(request):
    # 手动序列化为JSON字符串
    content_str = json.dumps(new_file)
    extract_data = Cell(content = content_str)
    extract_data.save()

读取逻辑

import json

cell = Cell.objects.first()
mat = json.loads(cell.content) # 得到原始嵌套浮点列表

补充说明

  • 千级元素的矩阵大小远低于SQLite单条记录的存储上限,两种方案都不会出现容量问题
  • 如果后续需要做矩阵运算,读取后直接转换为numpy数组即可:import numpy as np; np_mat = np.array(mat)
  • 不建议使用pickle序列化存储,存在反序列化安全风险,JSON方案兼容性和安全性更高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 13:36:04