TypeError: addRecord() missing 1 required positional argument: 'val9'

TypeError: addRecord() missing 1 required positional argument: 'val9'

我想使用 psycopg2 将我的数据插入到 PostgreSQL。

我创建了这样的 addRecord 定义:

def addRecord(self, val1, val2, val3, val4, val5, val6, val7, val8, val9):
        query = """
        INSERT INTO stories (
        val1, 
        val2,
        val3, 
        val4, 
        val5, 
        val6, 
        val7, 
        val8, 
        val9) 
        VALUES(%s, %s, %s, %s, %s, %s, %s, %s, %s)"""
        self.cursor.execute(query, (val1, val2, val3, val4, val5,val6, val7, val8, val9))
        self.connection.commit()

我这样称呼这个 addRecord 定义:

        print("Val9 value is " + val9) ===============================>>>>>IT'S WORKING 
        DatabaseConnection.addRecord(
            val1, 
            val2, 
            val3,
            val4, 
            val5, 
            val6, 
            val7, 
            val8, 
            val9)

这样的输出:

Val9 value is 12345asdas
...
...
TypeError: addRecord() missing 1 required positional argument: 'val9'

为什么我会收到这个错误?我该如何解决?

你的addRecord()好像不是class方法,所以self变成了普通参数。删除它,因为有10个参数,而val1成为自变量的值。

您的 addRecord 方法引用 self (self.cursor & self.connection),通常是 instance 变量。您已使用 DatabaseConnection.addRecord(...) 调用了 addRecord。很可能需要 DatabaseConnection().addRecord(...) → 注意 DatabaseConnection 之后的括号。这只有在您的 class __init__() 已经具有创建连接所需的默认值时才有效。

通常,它应该是这样的:

conn = DatabaseConnection()
conn.addRecord(...)
conn.addRecord(...)
# etc.