我有一个具有复杂数据结构的 python 类。它具有嵌套的对象列表和字典以及纯数据。
class NK_Automata(object):
def __init__(self,p_N=5,p_K=5,p_functionsList=None,p_linksList=None):
self.N=p_N
self.K=p_K
if p_functionsList==None:
p_functionsList=[]
else:
self.functionsList= p_functionsList #list of BinFunction objects
if p_linksList==None:
self.linksList=[]
else:
self.linksList=p_linksList #list of lists of integers
self.ordinalNumber=-1
self.stateSpan={} #stateSpan: {currentStateNumber: nextStateNumber,...}
self.stateList=[] #list of integers
self.attractorDict={} #attractorDict: {attractorNumber:[size,basinSize],...}
self.attractorStatesDict ={} #attractorStatesDict: {attractorStateNumber:[nextAttractorStateNumber,attractorStateWeight],...}
我应该如何将它存储在数据库(sqlite3)中?如何为这个对象制作一个 Django 模型?我应该序列化对象吗?
更新 按照建议修复了默认参数
请您参考如下方法:
你可能想看看django-picklefield .
django-picklefield 提供了 pickled 对象字段的实现。此类字段可以包含任何可腌制对象。
基本上,这将采用任何 Python 对象,保存它的 pickled 表示,并且在从数据库中提取 pickled 表示后,您可以将其重新创建为完全相同的对象。
您可能想要创建一个模型对象 NK_Automata 将这些属性中的每一个存储在 picklefield 中,然后创建一个方法来重新创建具有所有属性的实际类对象。我不能向您保证整个类都是可腌制的,但可以将整个 NK_Automata 类实例存储在一个字段中。
