Python如何显示数据库信息?调用类方法查询用户数据报错求助
问题分析与修复方案
先帮你梳理代码里的核心问题,再给出可运行的修正版本:
1. 重复包装类方法导致绑定异常
你已经用@classmethod装饰了users_list方法,又手动执行users_list = classmethod(users_list),这属于重复操作,会打乱类方法的绑定逻辑,直接删除这行手动赋值的代码即可。
2. 未初始化类的游标(cursor)属性
cls.cursor如果没有提前通过数据库连接获取,调用execute时必然报错。你需要先在类中完成数据库连接和游标的初始化。
修正后的完整代码示例(以SQLite为例,其他数据库可适配替换)
import sqlite3 class Users: # 初始化类级别的数据库连接与游标 _db_conn = sqlite3.connect("your_database.db") cursor = _db_conn.cursor() @classmethod def users_list(cls): try: cls.cursor.execute("SELECT * FROM users") data = cls.cursor.fetchall() # 注意:你原代码里的fistname是拼写错误,已修正为firstname for row in data: print("Id : {}, name :{}, firstname :{}, genre :{}, address :{}, city :{}".format( row[0], row[1], row[2], row[3], row[4], row[5] )) except Exception as e: # 捕获异常方便排查具体问题(比如表不存在、连接失败等) print(f"执行查询出错: {str(e)}") # 按需关闭连接/游标,长期运行的服务可跳过此步骤 # finally: # cls.cursor.close() # cls._db_conn.close() # 调用类方法 Users.users_list()
额外提示
- 如果使用MySQL、PostgreSQL等其他数据库,只需替换连接部分的代码(比如用
pymysql.connect()替代sqlite3.connect())。 - 加上异常捕获能快速定位问题,避免只看到报错片段却找不到根源。
内容的提问来源于stack exchange,提问作者hitech
相关产品推荐
相关产品推荐

