Форум сайта python.su
1
День добрый, пишу небольшую утилитку и для сохранения неких данных использую модуль shelve, но столкнулся с проблемкой, что данные не всегда обновляются своевременно.
Пример для наглядности:
>>>db = shelve.open(os.path.join(user_profiles, 'accounts_db')) >>>accounts = dict() >>>for x in db.keys(): accounts[x] = db[x] >>>db.close() >>>print(accounts) {'Max': {'Valuators': {'Insval': {'Comments': {'Comment 1': 'Max comment 1'}}}}, 'Den': {'Valuators': {'Insval': {'Comments': {'Comment 1': 'Den comment 1'}}}}}
>>>accounts['Max']['Valuators']['Insval']['Comments']['Comment 2'] = 'MAX COMMENT 2' >>>db = shelve.open(os.path.join(user_profiles, 'accounts_db')) >>>db['Max']['Valuators']['Insval']['Comments'] = accounts['Max']['Valuators']['Insval']['Comments'] >>>db.close()
>>>db = shelve.open(os.path.join(user_profiles, 'accounts_db')) >>>print(db['Max']['Valuators']['Insval']['Comments']) {'Comment 1': 'Max comment 1'} >>>db.close()
>>>db = shelve.open(os.path.join(user_profiles, 'accounts_db')) >>>for x in accounts.keys(): try: db[x] = accounts[x].rstrip() except AttributeError: db[x] = accounts[x] >>>db.close() >>> >>> >>>db = shelve.open(os.path.join(user_profiles, 'accounts_db')) >>>print(db['Max']['Valuators']['Insval']['Comments']) {'Comment 1': 'Max comment 1', 'Comment 2': 'MAX COMMENT 2'} >>>db.close()
Отредактировано Acamori (Март 1, 2018 09:16:10)
Офлайн
186
Пользуйся чем нибудь другим, например можно использовать sqlite. В своё время от shelve у меня остались сугубо негативные впечатления.
Офлайн