如何在添加之前在我的数据库中找到值的存在?

时间:2016-04-05 06:29:39

标签: sqlite python-3.x

我是SQLite数据库的新手,所以我无法确定问题是什么,我愿意为世界各地的汽车及其费率列表创建一个数据库。

    import sqlite3
db = sqlite3.connect('Car.db')
cur= db.cursor()
var = (int)(input("How many cars you want to enter?"))
for i in range(var):
    Has = input('CAR :')
    for name in Has:
        cur.execute('SELECT count(*) FROM CARS WHERE Name = ?',(name,))
        base = cur.fetchone()[0]
        if base ==0:
            print('CAR EXISTS')
        else:
            some = input('RATE:')
            cur.execute('''INSERT INTO CARS(Name,Rate)VALUES(?,?)''',{'Name':Has,'Rate':some})
db.close()

我想在添加到我的数据库之前检查输入的汽车是否已经存在,但是当我这样做时它显示以下输出

CAR:奥迪 车辆存在 车辆存在 车辆存在 车辆出租车

谢谢

编辑 根据CL'S注释,我插入了语句,发现循环遍历每个像这样的单个字符 CAR:奥迪 一个 汽车已经存在 ü 汽车已经存在 等等

我解决了但是我得到了同样的错误, 以下是我的解决方法:

  for name in Has,:

工作代码:[除了回答我的代码包含几个错误,为什么我提供此代码]

import sqlite3
db = sqlite3.connect('Cars.db')
cur= db.cursor()
var = (int)(input("How many cars you want to enter?"))
for i in range(var):
    Has = input('CAR :')
    for name in Has,:
        cur.execute('SELECT count(*) FROM CARS WHERE Name = ?',(name,))
        base = cur.fetchone()[0]
        if base>0:
            print('CAR EXISTS')
        else:
            some = input('RATE:')
            var = '''INSERT INTO CARS(Name,Rate)VALUES(?,?)'''
            cur.execute(var,(name,some))
db.commit()
db.close()

1 个答案:

答案 0 :(得分:0)

    if base ==0:
        print('CAR EXISTS')

当行数为零时,您正在打印" EXISTS"。 这是错的;当汽车存在时,匹配行的数量将大于零。