如何检查Record是否存在

时间:2017-10-20 19:52:18

标签: python sql python-3.x sqlite

我希望能够检查DB中是否存在具有特定“ID”的记录,如果没有记录,则创建一个记录(即,存在不存在)就像这样...... 我还希望在更新后获取特定记录的“Num”。

import sqlite3 as lite

db = lite.connect("test.db")
id_to_be_added = "123456789101112"

db.execute("CREATE TABLE USERS (ID TEXT, NUM INT)")

Query = "{ SOMETHING IN SQL }"  # This returns either True or False
if Query:
    db.execute("UPDATE USERS SET NUM = NUM + 1 WHERE ID =  {};".format(id_to_be_added))

else:
    db.execute("INSERT INTO USERS ({}, 0)".format(id_to_be_added))

num_to_be_printed = db.execute("SELECT NUM FROM USERS WHERE ID = {}".format(id_to_be_added))

print("{0} has {1}").format(id_to_be_added, num_to_be_printed)

2 个答案:

答案 0 :(得分:0)

创建主键并使用INSERT OR REPLACE查询,或使用SELECT查询。

答案 1 :(得分:0)

我能够使用cur.fetchall()

解决它
import sqlite3 as lite

db = lite.connect(r"test.db")
id_tba = r"123456789101112"
cur = db.cursor()
cur.execute("SELECT * FROM USERS WHERE ID = {}".format(id_tba))

if len(cur.fetchall()) > 0:
    db.execute("UPDATE USERS SET NUM = NUM + 1 WHERE ID =  {};".format(id_tba))
else:
    db.execute("INSERT INTO USERS ({}, 0)".format(id_tba))

num_to_be_printed = db.execute("SELECT NUM FROM USERS WHERE ID = {}".format(id_tba))
print("{0} has {1}").format(id_tba, num_to_be_printed)