Модуль shelve. Выдается ошибка при попытке вывести переменную из базы данных

242 просмотра#Python #помощь #python#shelve
0
1 Комментарий

Использую Python 3.7; OS Windows

Сначала я создаю экземпляр класса:

import shelve
 class Test:
 def __init__(self, name, age):
  self.name = name
   self.age = age
 def __str__(self):
  return \'%s, %s\' % (self.name, str(self.age))
ted = Test(\'Teddy\', 34)
 db = shelve.open(\'people\')
db[\'ted\'] = ted
db.close()

После чего пытаюсь вывести переменную db[‘ted’]:

import shelve
db = shelve.open(\'people\')
print(db[\'ted\'])
db.close()

Выдает такую ошибку:

Traceback (most recent call last):
File «D:\\Python372\\lib\\shelve.py», line 111, in __getitem__
value = self.cache[key]
KeyError: ‘ted’

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File «check.py», line 18, in <module>
print(db[‘ted’])
File «D:\\Python372\\lib\\shelve.py», line 114, in __getitem__
value = Unpickler(f).load()
AttributeError: Can\’t get attribute ‘Test’ on <module ‘__main__’ from ‘check.py’>
>>>

Если при попытке вывести экземпляр класс будет в самом коде, то ошибку не выдает, но нужно, чтобы выводило, даже если этот экземпляр класса был создан в другом скрипте

Помогите, пожалуйста


Ярослав добавил комментарий

Почему-то символы табуляции пропали тут перед def.

Добавить комментарий

0 Answers

Python Опубликовано 17.08.2019
Напишите свой ответ на данный вопрос.
Scroll Up

Подпишись на канал!

Новые видеоуроки, книги и полезные статьи для python программистов!