sqlite AttributeError:“Str”对象没有属性“”Cursor“”

bogh5gae  于 2022-11-14  发布在  SQLite
关注(0)|答案(1)|浏览(221)

此Python类应该查询SQLite数据库:

import sqlite3

class Database:
    def __init__(self):
        self.connection = sqlite3.connect('devel.db')
        self.cursor = self.connection.cursor()
        self.connection.commit()
    
    def query(self, query, params=()):
        if params == ():
            self.cursor.execute(query)
        else:
            self.cursor.execute(query, params)
        self.connection.commit()
        return True
    
    def select(self, query, params=()):
        if params == ():
            self.cursor.execute(query)
        else:
            self.cursor.execute(query, params)
        return self.cursor.fetchall()

id = 1
Database.select("SELECT * FROM users WHERE id = ?", (id,))

它提供了:
AttributeError:“Str”对象没有属性“”Cursor“”
我还尝试了self.connection.cursor()而不是self.cursor

pod7payv

pod7payv1#

要调用query方法,需要首先创建Database类的示例。
基本上,通过在没有对象的情况下调用query方法,您是在将查询字符串作为self参数传递,因此它尝试访问字符串中的cursor()方法,而不是类本身。
因此,与其执行此代码,不如:

Database.select("SELECT * FROM users WHERE id = ?", (id,))

您需要这样做:

db = Database()

db.select("SELECT * FROM users WHERE id = ?", (id,))

相关问题