Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql和Python-TypeError:在字符串格式化期间并非所有参数都已转换_Python_Postgresql_Flask_Flask Sqlalchemy - Fatal编程技术网

Postgresql和Python-TypeError:在字符串格式化期间并非所有参数都已转换

Postgresql和Python-TypeError:在字符串格式化期间并非所有参数都已转换,python,postgresql,flask,flask-sqlalchemy,Python,Postgresql,Flask,Flask Sqlalchemy,我使用Python Flask和Postgres将一个苹果插入数据库: cursor.execute(""" LOCK TABLE apples IN SHARE ROW EXCLUSIVE MODE; INSERT INTO apples(apple) SELECT %s WHERE NOT EXISTS ( SELECT * FROM apples WHERE apple = %s

我使用Python Flask和Postgres将一个苹果插入数据库:

cursor.execute("""
        LOCK TABLE apples IN SHARE ROW EXCLUSIVE MODE;
        INSERT INTO apples(apple)
        SELECT %s
            WHERE NOT EXISTS (
                SELECT * FROM apples WHERE apple = %s
            );
        """,
        apple))
但我得到了以下错误:

TypeError:在字符串格式化过程中并非所有参数都已转换

错在哪里

编辑: 使用
(apple,)
我得到以下错误:索引器错误:元组索引超出范围(同样使用
[apple]


谢谢

苹果
放入一个iterable,即列表或元组中:

cursor.execute("""
    LOCK TABLE apples IN SHARE ROW EXCLUSIVE MODE;
    INSERT INTO apples(apple)
    SELECT %s
        WHERE NOT EXISTS (
            SELECT * FROM apples WHERE apple = %s
        );
    """,
    (apple,)))

您只格式化了一个字符串,但有两个。另外,我非常确定Python的游标对象不允许有多个语句。您需要将锁表拆分。我已删除了锁表语句,但错误仍然存在。感谢y的提示响应,但现在我收到以下错误:
索引器:元组索引超出范围(也与
[apple]
)。您的SQL代码中有两个
%s
,因此,您需要在元组或参数列表中转换相同数量的参数。在您的情况下,它们似乎都是
apple
,因此看起来像(apple,apple)或[apple,apple]。