Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从字典字符串恢复python dateutil.rrule对象?_Python_Python Dateutil_Rfc2445_Rfc5545_Rrule - Fatal编程技术网

如何从字典字符串恢复python dateutil.rrule对象?

如何从字典字符串恢复python dateutil.rrule对象?,python,python-dateutil,rfc2445,rfc5545,rrule,Python,Python Dateutil,Rfc2445,Rfc5545,Rrule,我想将dateutil.rrule对象存储到数据库中,并在从数据库读取后重新创建它们 鉴于以下问题,我认为我需要使用一种变通方法。 我正在考虑将myrrule的输出作为字符串存储到数据库中,然后在需要时重新创建rrule对象 这就是dict的样子: {'_cache_complete': False, '_byhour': (0,), '_wkst': 0, '_timeset': (datetime.time(0, 10),), '_bysecond': (0,), '_bymonthday

我想将dateutil.rrule对象存储到数据库中,并在从数据库读取后重新创建它们

鉴于以下问题,我认为我需要使用一种变通方法。

我正在考虑将myrrule的输出作为字符串存储到数据库中,然后在需要时重新创建rrule对象

这就是dict的样子:

{'_cache_complete': False, '_byhour': (0,), '_wkst': 0,
'_timeset': (datetime.time(0, 10),), '_bysecond': (0,),
'_bymonthday': (), '_byweekno': None, '_bysetpos': None,
'_cache': None, '_bymonth': None, '_bynweekday': ((4, 3),),
'_tzinfo': None, '_byyearday': None, '_byweekday': None,
'_byminute': (10,), '_len': 10, '_until': None,
'_bynmonthday': (), '_dtstart': datetime.datetime(2012, 10, 13, 0, 10),
'_count': 10, '_freq': 1, '_interval': 1, '_byeaster': None}
这是个好主意吗?还有其他建议吗

如何从字典中恢复python对象? python setattr()是我的最佳选择还是有更简单的方法

我应该考虑使用这样的东西吗?

您需要的是python的
pickle
模块。
pickle
模块是一个简单的序列化模块,可以将任何python对象转换为字符串。该字符串稍后可以反序列化回原始对象

import pickle
serial_str = pickle.dumps(your_rrule_object)
db.store(serial_str)
...
serial_str = db.retrieve()
new_rrule_object = pickle.loads(serial_str)

查看pickle模块的文档以了解更多详细信息。

在@oberron行折叠时应小心,我认为您的评论不适用于此处,因为它没有被序列化到iCalendar语法中。相反,它是python对象结构/内容被序列化为与iCalendar无关的格式