Я пытался извлечь некоторые словари из базы данных.Я вернулся к использованию модуля маршала, но все еще задавался вопросом, почему Pickle испытывает такие трудные времена, не сериализуя некоторые данные.Вот сеанс Python командной строки, показывающий, что я пытаюсь сделать:загружает ошибки детали.Струны, которые я пытаюсь загрузить, протравливаются так же, как и выше.Я даже пытался скопировать точную строку, которая выводится в сеансе командной строки выше, и просто пытался ее распечатать, но безуспешно.Вот код для этой последней попытки:
class Resource:
_service = 'unknown'
_protocol = 'unknown'
_key = 'unknown'
'''
Factory method that creates an appropriate instance of one of Resource’s subclasses based on
the type of data provided (the data being a serialized dictionary with at least the keys 'service',
'protocol', and 'key').
@param resource_data (string) -- the data used to create the new Resource instance.
'''
@staticmethod
def resource_factory(resource_data):
# Unpack the raw resource data and then create the appropriate Resource instance and return.
resource_data = "KGRwMApTJ3Byb3RvY29sJwpwMQpTJ3N0cmVhbScKcDIKc1Mna2V5JwpwMwpTJ2xhamRmb2F1MDk0MjRqb2pmLmZsdicKcDQKc1Mnc2VydmljZScKcDUKUydhbWF6b24nCnA2CnMu" #hack to just see if we can unpickle this string
logging.debug("Creating resource: " + resource_data)
unencoded = base64.b64decode(resource_data)
logging.debug("Unencoded is: " + unencoded)
unpacked = pickle.loads(unencoded)
logging.debug("Unpacked: " + unpacked)
service = unpacked['service']
protocol = unpacked['protocol']
key = unpacked['key']
if (service == 'amazon'):
return AmazonResource(service=service, protocol=protocol, key=key)
elif (service == 'fs'):
return FSResource(service=service, protocol=protocol, key=key)