Запрос на основе пользовательского ввода, возврат результата, затем выполнение запроса с новым пользовательским вводом - PullRequest
0 голосов
/ 20 марта 2020

Я пытаюсь запросить базу данных на основе ввода пользователя, если данные существуют, то распечатать данные, в противном случае запросить ввод новых данных. По запросу код возвращается только один раз.

Я пытался использовать оператор while True: он неоднократно запрашивает данные на основе исходного ввода.

Я хотел бы сделать запрос на основе ввода, вернуть результат, а затем сбросить запрос на основе ввода нового пользователя. Не могу понять это. Любая помощь будет оценена.

user_input = input("Scan ID: ")

def read_from_db():
            try:
                c.execute("SELECT * FROM users WHERE barcode LIKE %s", ("%" + user_input + "%",))
                result = c.fetchall()
                if result is not None:
                    print ('Name:' , result[0][1], '| barcode: ' , result[0][3], ' | crew position: ' , result[0][4])

            except:
                 print ("Register new user")


def main():
     read_from_db()


if __name__ == '__main__':
    try:
        db = MySQLdb.connect("localhost","user","pw","database")
        c= db.cursor()
    except:
        print ("not working...")


Ответы [ 2 ]

0 голосов
/ 05 апреля 2020

Это сделал трюк -

while True:
    user_input = input("Scan ID: ")
    read_from_db = c.execute("SELECT * FROM users WHERE barcode LIKE %s", ("%" + user_input + "%",))
    result = c.fetchall()
    #print (result)
    today = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
    print (today)
    if len(result) == 1:
        print ('Name:' , result[0][1], '| barcode: ' , result[0][3], ' | crew position: ' , result[0][4])
        c.execute("INSERT INTO Data (first_name,last_init,crew,time) VALUES (%s,%s,%s,%s)", (result[0][1],result[0][2][:1],result[0][4],today,))
        db.commit()

    else:
        print ("Register new user")
        fn = input("First Name: ")
        ln = input("Last Name: ")
        bc = input("Scan ID: ")
        cp = input("IP or Student: ")
        c.execute("INSERT INTO users (first_name,last_name,barcode,crew_position) VALUES (%s,%s,%s,%s)", (fn,ln,bc,cp,))
        db.commit()
0 голосов
/ 21 марта 2020

ВЫБРАТЬ * ОТ ПОЛЬЗОВАТЕЛЕЙ, ГДЕ СТОРОН, КАК КОНКАТ ('%', user_input, '%');

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...