在插入另一个选项卡之前,与两个表匹配的Python MySQL车牌号

2024-04-25 20:26:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我有三张桌子

首先是Registered Plate Table

第二个是Unregistered Plate Table

第三是Vehicle_Login Table

在登记表中,我有一个车牌号AAA4890

在未注册的表中,我有一个车牌号AAA890

然后我有一个接受recognized plate的函数。ocr的可能识别是AAA890AAA4890等等(我将转储)。在我将recognized plate插入Vehicle_login之前,我想将recognized plate插入Registered Table and Unregistered table的板中。如果识别的盘子与我的两张桌子不匹配。我将转储它,否则我将把它插入Vehicle_Login,这也取决于哪个表和它的板匹配

另外,如果recognized plate已经在Vehicle_Login中,我将不会再次插入它,因此我可以防止多个值再次插入它。我正在从Ip cam读取帧,并且我的程序可以识别它的每一帧

    add_plate = "INSERT INTO vehicle2_login (plate,status,time_login) values (%s,%s,%s)" 
    ts = time.time()
    st = datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d %H:%M:%S')

    last_id = "SELECT * FROM vehicle2_login WHERE id=(SELECT MAX(id) FROM `vehicle2_login`)"
    cursor.execute(last_id)
    record = cursor.fetchall()
    last_plate = record[0][1]

    sql = "SELECT * FROM registered where plate = %s"
    cursor.execute(sql, (plate, ))
    result_set = cursor.fetchall()
    checker = ""
    for row in result_set:
        if plate == row[2]:
            checker = True
        elif plate != row[2]:
            checker = False
        else:
            checker = False

    sql2 = "SELECT * FROM unregistered where plate = %s"
    cursor.execute(sql2, (plate, ))
    result_set2 = cursor.fetchall()
    checker2 = ""
    for row2 in result_set2:
        if plate == row[1]:
            checker2 = True
        elif plate != row[1]:
            checker2 = False
        else:
            checker2 = False
    if checker or not checker2:
        status = "Registered"
        data_plate = (plate,status,st)
        print("This plate number", plate, "is Registered \n")
        if plate == last_plate:
            print("Cannot insert it's already logged in \n")    
        else:
            cursor.execute(add_plate, data_plate)
            mydb.commit()
    elif not checker or checker2:
        status = "Unregistered"
        data_plate = (plate,status,st)
        print("This plate number", plate, "is Unregistered \n")
        if plate == last_plate:
            print("Cannot insert it's already logged in \n")    
        else:
            cursor.execute(add_plate, data_plate)
            mydb.commit()
    elif not checker and not checker2:
        print(plate, "was Dumped!")

Tags: executeifstatustablecheckerlogincursorrow