Python psycopg2,TypeError:execute()接受2个位置参数,但给出了3个

Python psycopg2,TypeError:execute()接受2个位置参数,但给出了3个,python,flask,psycopg2,Python,Flask,Psycopg2,我正在使用psycopg2库为数据库构建一个类,以便与PostgreSQL数据库接口。我可能对数据库也有误解,因为我读到在同一个类中定义连接和游标不是一个好的设计。如果能解释一下,那就太好了,因为我读过使用单例模式和不使用单例模式的混合反应 db.py class Database: def __init__(self, db, user, password, port, host): self.db = db self.user = user

我正在使用psycopg2库为数据库构建一个类,以便与PostgreSQL数据库接口。我可能对数据库也有误解,因为我读到在同一个类中定义连接和游标不是一个好的设计。如果能解释一下,那就太好了,因为我读过使用单例模式和不使用单例模式的混合反应

db.py

class Database:
    def __init__(self, db, user, password, port, host):
        self.db = db
        self.user = user
        self.password = password
        self.port = port 
        self.host = host

    def connect(self):
        self.connection = psycopg2.connect(
            database=self.db,
            user=self.user,
            password=self.password,
            port=self.port,
            host=self.host
        )
        self.cursor = self.connection.cursor()

    def executeQuery(self, query, values=None):
        print('query:', query)
        if values:
            self.cursor.execute(query, values)
        else:
            self.cursor.execute(query)
        self.connection.commit()

    def close(self):
        self.cursor.close()
        self.connection.close()
@staticmethod
def create(id, name, email, profile_pic):
    db.executeQuery(
        "INSERT INTO users (id, name, email, profile_pic) VALUES (%s,%s,%s,%s);", (id, name, email, profile_pic)
    )
所以我要做的是我有一个数据库类来保持连接和游标的状态。我将有其他类,这些类将基本上与数据库类交互。例如:

users.py

class Database:
    def __init__(self, db, user, password, port, host):
        self.db = db
        self.user = user
        self.password = password
        self.port = port 
        self.host = host

    def connect(self):
        self.connection = psycopg2.connect(
            database=self.db,
            user=self.user,
            password=self.password,
            port=self.port,
            host=self.host
        )
        self.cursor = self.connection.cursor()

    def executeQuery(self, query, values=None):
        print('query:', query)
        if values:
            self.cursor.execute(query, values)
        else:
            self.cursor.execute(query)
        self.connection.commit()

    def close(self):
        self.cursor.close()
        self.connection.close()
@staticmethod
def create(id, name, email, profile_pic):
    db.executeQuery(
        "INSERT INTO users (id, name, email, profile_pic) VALUES (%s,%s,%s,%s);", (id, name, email, profile_pic)
    )
这是一个对数据库进行插入查询的函数。调用此函数时,我会从标题中显示错误。基本上,我遵循以下文件:


但我没办法让它工作。任何帮助都将不胜感激,谢谢

通过
def create(id,name,email,profile_pic)
中的
id,name,email,profile_pic
验证实际传入的内容。