TypeError:参数1必须是字符串或unicode对象:改为获取元组

2024-06-17 12:31:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用psycopg2将数据插入postgresql

我的addRecord函数如下所示:

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

我这样称呼这个定义:

db.addRecord("asdasd", "asfasf", "asfasfa", "afasfwqe", "afqwrqwr", "dferqwrqw", "afasf", "afasfasf")

但当我尝试插入此数据时,会出现以下错误:

TypeError: argument 1 must be a string or unicode object: got tuple instead

为什么我会犯这个错误。我怎样才能解决这个问题


Tags: 数据selfpostgresql错误querypsycopg2val1val2
1条回答
网友
1楼 · 发布于 2024-06-17 12:31:56

query是查询和参数的元组。相反,您应该将参数传递给execute方法:

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

相关问题 更多 >