类型错误:参数 1 必须是字符串或 unicode 对象:改为得到元组

时间:2021-04-01 20:12:36

标签: python python-3.x psycopg2

我想使用 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 代替

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

1 个答案:

答案 0 :(得分:1)

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))