使用python构建本地数据库,但由于“关键错误”而无法继续(完整代码如下)

2024-06-16 10:07:48 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,我一直在编写python代码,创建一个简单的学生和大学数据库,这些学生和大学正在使用课堂和熊猫图书馆学习。事情是这样的-

  1. 我正在尝试创建一个数据库,用户可以在其中输入他/她的大学详细信息,包括课程到一个已经制作好的csv文件(工作非常完美)
  2. 我试图添加一个功能,当用户从csv文件中输入学院的“id”时,删除整行详细信息(id、学院名称、学院课程、学院城市、费用和pincode)
import pandas as pd
import csv
from csv import writer

def append_list_as_row(file_name, list_of_elem):
    # Open file in append mode
    with open(file_name, 'a+', newline='') as write_obj:
        # Create a writer object from csv module
        csv_writer = writer(write_obj)
        # Add contents of list as last row in the csv file
        csv_writer.writerow(list_of_elem)

class College:
    def __init__(self, collegeId, collegeName, courseType, city, fees, pinCode):
        self.collegeId = collegeId
        self.collegeName = collegeName
        self.courseType = courseType
        self.city = city
        self.fees = fees
        self.pinCode = pinCode
        
#The @classmethod decorator exists so you can create class methods that are passed to the actual class object within the function call
    @classmethod
    def student(self):
        collegeId = str(input("Enter college ID: "))
        collegeName = str(input("Enter college's name: "))
        courseType = str(input("Enter course: "))
        city = str(input("Enter city: "))
        fees = str(input("Enter fees: "))
        pinCode = str(input("Enter pincode: "))

        cond = str(input("Would you like to delete any entry? Type Yes or No: "))
        if cond in ['yes', 'Yes', 'YES', 'Y', 'y']:
            df = pd.read_csv('colleges.csv')
            df = df.dropna(how = 'all') #filtering rows that don't have any data
            df = df.set_index('identity')
            delete_row = input("please enter the id of the college whose data needs to be deleted: ")
            df.drop(df[df['identity'] == delete_row].index, inplace = True)
        elif cond in ['no', 'No', 'NO', 'N', 'n']:
            row_contents = [] #empty list initiation
            row_contents.append(collegeId)
            row_contents.append(collegeName)
            row_contents.append(courseType)
            row_contents.append(city)
            row_contents.append(fees)
            row_contents.append(pinCode)
            append_list_as_row('colleges.csv', row_contents)
        else:
            print("invalid entry. Please reply with a Yes or No.")
        return self(collegeId, collegeName, courseType, city, fees, pinCode)


data = College.student()
print(data)

在第36行,我得到一个错误-

KeyError: 'identity'

需要一点支持删除行部分,因为我已经被困了几个小时。我是个新手

这里还有csv文件的格式-

 Identity, cname, course, city, fees, pincode

Tags: csvselfcitydfinputcontentslistrow