Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.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
如果列满足conidtion,则sqlite python executemany可以替换,否则忽略_Python_Sqlite_Replace - Fatal编程技术网

如果列满足conidtion,则sqlite python executemany可以替换,否则忽略

如果列满足conidtion,则sqlite python executemany可以替换,否则忽略,python,sqlite,replace,Python,Sqlite,Replace,我目前正在制作一个简单的购物清单,由多个用户更新。下面的代码已经完成了它需要完成的大部分工作 用户1将queryList one发送到数据库,其中整数1表示已删除但未删除的项: 用户2发送QueryList 2,其中树莓被划掉,菠菜被添加到列表中 import sqlite3 as lite queryList1 = [("Raspberries",0),("Water",0),("Lemon",1)] queryList2 = [(

我目前正在制作一个简单的购物清单,由多个用户更新。下面的代码已经完成了它需要完成的大部分工作

用户1将queryList one发送到数据库,其中整数1表示已删除但未删除的项:

用户2发送QueryList 2,其中树莓被划掉,菠菜被添加到列表中

import sqlite3 as lite

queryList1 = [("Raspberries",0),("Water",0),("Lemon",1)]
queryList2 = [("Raspberries",1),("Water",0),("Spinach",0)]


# -- open the connection and create a cursor
conn  = lite.connect(':memory:')
cursor = conn.cursor()

conn.execute("""CREATE TABLE shoppingList (
        item STRING UNIQUE,
        checked INTEGER
        );""")

# ----------- First Query -----------------
insertQuery1 = """INSERT INTO shoppingList
            VALUES (:item, :checked);"""
with conn:
    cursor.executemany(insertQuery1, queryList1)


# ----------- Second Query -----------------
insertQuery2 = """INSERT OR IGNORE INTO shoppingList
                 VALUES (:item, :checked);
            """ 
with conn:
    cursor.executemany(insertQuery2, queryList2)

# ----------- Display Result Query -----------------
with conn:
    cursor.execute("SELECT * FROM shoppingLIST")
print(cursor.fetchall())


# ------------------- close the curser and the database ----------------------
cursor.close()
conn.close()
该代码给出了以下结果:

[("Raspberries",0),("Water",0), ("Lemon",1),("Spinach",1)]
它应该给我以下结果:

[("Raspberries",1),("Water",0), ("Lemon",1),("Spinach",1)]
我尝试使用以下第二个查询命令更新数据库:

with conn:
     cursor.executemany("""INSERT OR REPLACE INTO shoppingList VALUES(?,?)
                SELECT item,checked WHERE NOT EXISTS(SELECT * FROM shoppingList
                WHERE checked = 1);
                """, queryList2)
这会导致一个我无法解决的未解释语法错误。 事先非常感谢您的帮助。

(树莓,0)是预期的结果。第二次插入被忽略(违反了唯一约束),没有执行DML。如果sqlite版本(
sqlite3.sqlite\u版本
)至少为3.24,那么可能会解决问题。还是仅仅是打字错误

第二个查询不是有效的sqlite3语法,句号为。首先,选中的
选择项
短语没有
from
子句