2017-11-22 13 views
1

私はPythonで新しく、ちょっと混乱しています。私は\ shelter db(もちろんキーと同じではない)の整数データを変更することはできません。それはpy(shelve)機能ですか?Pythonのshelveモジュールにデータを格納する方法は?

テストコード:

import shelve 

class User: 
    def __init__(self, name = 'no name', user_id = '0', balance = 0): 
     self.name = name 
     self.user_id = user_id 
     self.balance = balance 
    def addUser(self, name, user_id): 
     db = shelve.open('class_user') 
     db[user_id] = User(name=name, user_id=user_id) 
     db.close() 
    def updateBalance(self, user_id, value): 
     db = shelve.open('class_user') 
     db[user_id].balance = value 
     db.close() 
    def printBalance(self, user_id): 
     db = shelve.open('class_user') 
     print(db[user_id].name, 'balance is', db[user_id].balance, sep=' ', end='!\n') 
     db.close() 
################################################################### 

# test values 
value = 1000 
user_id = '1' 
name = 'Mike' 

User.printBalance(User, user_id=user_id) 
User.updateBalance(User, user_id=user_id, value=value) 
User.printBalance(User, user_id=user_id) 

は、だから、僕は文字列型を使用する必要がありますか、いくつかは、私はまだ知らない何かがあります)事前にありがとうございます!

答えて

0

shelveのデータベースにいくつかのデータを保存するには、writebackパラメータを使用する必要があります。ように:

def updateBalance(self, user_id, value): 
    db = shelve.open('class_user', writeback=True) 
    db[user_id].balance = value 
    #db.sync() #excess cause of db.close() 
    db.close() 
関連する問題