You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:26:04