如何将输入值与mysql数据库进行比较,然后在没有匹配数据的情况下自动添加“ 0”和“ 1”

时间:2019-08-25 06:09:31

标签: python python-3.x

因此,我想将输入值与数据库进行比较。并且如果输入值与数据库值相同,则我想print("Data Valid")。如果不相同,我想在输入值上加上“ 0”和“ 1”。 并自动再次将最终值与我的数据库进行比较,等等。

所以我尝试了以下代码:

curs = connection.cursor()
    query = """ SELECT * FROM `foo` """

    curs.execute(query)
    result = curs.fetchall()
    inputvalue = input("Input= ")
    temp = False
    for x in result:
        if inputvalue in x:
            temp = True
    if temp:
        print("Data Valid")
    else:
        inputvalue += '0'
        inputvalue += '1'
        if inputvalue in x:
            print(inputvalue)

但是在运行代码之后,似乎它在值上同时添加了“ 0”和“ 1”,我希望它是2个不同的值。

如果数据与数据库相同,我希望输出为:

inputvalue= 100
Data Valid

如果不相同,我希望输出为:

inputvalue= 100
1000
1001

然后再次将10001001与我的数据库进行比较 输出将是这样的:(如果数据与我的数据库匹配)

inputvalue= 100
1000
1001
Data Valid

,如果不匹配:

inputvalue= 100
1000
1001
10000
10001
10010
10011

任何答案将不胜感激,对我有很大帮助!

1 个答案:

答案 0 :(得分:1)

您的代码有点混乱。您可以尝试以下方法:

def check(value, result):
    for ele in result:
        if value in ele:
            print('Data Valid')
            return True
    return False

def check_in_list(value_list, result):
    for value in value_list:
        if check(value, result):
            return True
    return False

# refer to your code
curs = connection.cursor()
query = """ SELECT * FROM `foo` """
curs.execute(query)
result = curs.fetchall()
input_value = input("Input= ")

value_list = [input_value]
while True:
    if check_in_list(value_list, result):
        break
    tmp_list = []
    for value in value_list:
        print(value + '0')
        print(value + '1')
        tmp_list.append(value + '0')
        tmp_list.append(value + '1')
    value_list = tmp_list

但是它有一些缺点,也许有时会陷入无限循环。