在python3中显示数据库信息的静态方法

时间:2018-04-09 18:17:43

标签: python methods

我是python中的新手。我想要做的是显示我的数据库的所有用户。为此,我使用静态方法,但它不起作用。 这是我的代码:

@classmethod
def users_list(cls):
    cls.cursor.execute("SELECT * FROM users")
    data = cls.cursor.fetchall()
    for row in data:
        print("Id : {}, name :{}, fistname :{}, genre :{}, address :{},
             city :{}".format(row[0], row[1], row[2], row[3], row[4], 
             row[5]))
    users_list = classmethod(users_list)

当我执行:users.users_list()时,我收到了此错误

cls.cursor.execute("SELECT * FROM users")
    AttributeError: type object 'Users' has no attribute 'cursor'

2 个答案:

答案 0 :(得分:0)

错误表示users类型的对象Users没有cursor属性。基于这段代码,该对象/类确实没有cursor属性,因此期望cls.cursor.execute(...)抛出异常。

答案 1 :(得分:0)

我想要做的是在不创建对象的情况下显示我的数据库信息。例如,如果我的班级是"用户"我的显示方法是" users-list"我想这样做:users.display() 这是完整的代码

from db_conn import * # Database class importation. That class only contains database connection 


class users:
def __init__(self):
    """Default constructor"""
    self.cursor = db_con.db.cursor() # Database initialization

@classmethod
def users_list(cls):
    cls.cursor.execute("SELECT * FROM users")
    data = cls.cursor.fetchall()
    for row in data:
        print("Id : {}, name :{}, fistname :{}, genre :{}, address :{},
         city :{}".format(row[0], row[1], row[2], row[3], row[4], 
         row[5]))
    users_list = classmethod(users_list)

    # Test
    if __name__ == "__main__":
    users.users_liste()