【问题标题】:Python how to display database informationPython如何显示数据库信息
【发布时间】:2018-04-09 18:17:42
【问题描述】:

我想显示我的数据库信息。我测试了这段代码,但它不起作用

@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'
  

你有解决办法吗?

【问题讨论】:

  • 你使用的是什么数据库API? cls 是什么类型的课程?
  • 我使用 myqsl 和 pymsql 作为 api。 cls 是我看到的,如果我想声明一个我必须使用它的静态方法。

标签: python


【解决方案1】:

错误表明您的 users 类型为 Users 的对象没有 cursor 属性。根据这段代码,该对象/类上确实没有cursor 属性,因此预计cls.cursor.execute(...) 会引发异常。

【讨论】:

  • 但是当我使用 SELF 而不是 CLS 时,它可以工作。我不明白为什么。喜欢 def users_list(self):
  • 您的cursor 属性很可能是在users 对象初始化时定义的,即,它是一个实例属性。仅当“光标”是类属性而不是实例属性时,使用cls.cursor 才有意义。 (当然cls.cursor,我的意思是使用classmethod 装饰器;)
  • Cursor 是一种 pymsql 方法。我不知道我该如何解决。
  • 要么定义实例方法而不是类方法,要么在类本身上初始化光标。如果您需要更多帮助,则需要提供更多代码,否则将很难正确理解这一点。此外,如果关于 SO 的答案对您有所帮助,请不要忘记投票,以便其他用户也可以从该答案中受益。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-30
  • 1970-01-01
  • 2021-09-20
相关资源
最近更新 更多