使用类时如何让查询员工姓名的函数返回所有结果?
解决方法
问题出在你每次循环都重新赋值sent_person,最后只返回了最后一次循环创建的对象,自然只能拿到最后一条记录。要返回所有姓名,你需要把每个循环生成的name_data实例都收集起来,最后返回这个集合。
修改后的函数代码如下:
def getNames (conn): cursor = conn.cursor() query = """SELECT NAME FROM PERSON""" cursor.execute(query) row = cursor.fetchone() # 初始化空列表存储所有姓名实例 person_list = [] while row: sent_person = name_data() sent_person.name = row[0] # 将当前实例加入列表 person_list.append(sent_person) row = cursor.fetchone() # 返回整个列表而非单个对象 return person_list
关键改动说明
- 新增
person_list列表,用来存储每条记录对应的name_data实例 - 每次创建完
sent_person后,用append()把它添加到列表中 - 最终返回整个列表,而不是单个
sent_person对象
调用修改后的函数后,你会得到包含所有姓名的name_data对象列表,遍历列表就能获取Maria、John、Sam这些姓名值。
内容的提问来源于stack exchange,提问作者Mikasa
相关产品推荐
相关产品推荐

