python crud with pickle,它做得对吗?

时间:2016-07-01 22:26:40

标签: python crud pickle

我将向您展示代码,我用一个带有字段ID,描述的银行实体制作了一个简单的文本文件。我的问题是如何通过pickle运行文件中的对象,因为我加载了内容,处理过,删除了文件并保存了,另一种方法是这样做?感谢

import pickle, os

class Bank:

def __init__(self, id, description):
    self.id = id
    self.description = description

def __str__(self):
    return "Id: {0}\nDescription: {1}".format(self.id, self.description)

class Banks:

def __init__(self):
    self.filename = 'banks.txt'
    self.load()

def load(self):
    try:
        with open(self.filename, 'rb') as f:
            self.banks = pickle.load(f)
    except:
        self.banks = []

def exists(self, code):
    if self.banks:
        for b in self.banks:
            if b.id == code:
                return True
    return False

def save_data(self):
    if os.path.isfile(self.filename):
        os.remove(self.filename)
    with open(self.filename, 'wb') as f:
        pickle.dump(self.banks, f)

def search(self, code):
    for pos, b in enumerate(self.banks):
        if b.id == code:
            return pos, b
    return 0, None


def add_bank(self, code):
    description = raw_input("Description: ")
    bank = Bank(code, description)
    self.banks.append(bank)
    self.save_data()

def show_bank(self, code):
    if self.exists(code):
        pos, bank = self.search(code)
        print bank
    else:
        print "bank does not exist"
    raw_input("Press ENTER to continue")

def update(self, code):
    if self.exists(code):
        pos, bank = self.search(code)
        print bank
        print "Write new data: "
        description = raw_input('Description:')
        self.banks[pos].description = description
        self.save_data()
        print "successfully updated"
    else:
        print "Bank does not exist"
    raw_input("Press ENTER to continue")

def delete(self, code):
    if self.exists(code):
        pos, bank = self.search(code)
        print bank
        confirm = raw_input("Are you sure? (Y/N): ").upper()
        if confirm == 'Y':
            del self.banks[pos]
            self.save_data()
            print "successfully deleted"
    else:
        print "Bank does not exist"
    raw_input("Press ENTER to continue")


def menu():
    while True:
        prompt = "1) Create\n"
        prompt += "2) Read\n"
        prompt += "3) Update\n"
        prompt += "4) Delete\n"
        prompt += "5) Exit\n"
        prompt += "Choose: "
        choose = int(raw_input(prompt))
        banks = Banks()
        if choose == 1:
            code = int(raw_input("Id Bank: "))
            if not banks.exists(code):
                banks.add_bank(code)
                print "successfully recorded"
            else:
                print "bank already exists"
            raw_input("Press Enter to continue")
        elif choose == 2:
            code = int(raw_input("Id Bank: "))
            banks.show_bank(code)
        elif choose == 3:
            code = int(raw_input("Id Bank: "))
            banks.update(code)
        elif choose == 4:
            code = int(raw_input("Id Bank: "))
            banks.delete(code)
        elif choose == 5:
            break
menu()

0 个答案:

没有答案