如何在python的搁置模块中存储数据?

时间:2017-11-22 23:10:07

标签: types shelve

我是python的新手,我有点困惑,因为我无法更改\搁置数据库中存储整数数据(当然不像密钥,只是arg)。它是py(搁置)功能吗?

测试代码:

    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)

那么我应该只使用字符串类型还是有一些我还不知道的东西?)提前谢谢你!

1 个答案:

答案 0 :(得分: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()