如果此查询中不存在记录,我可以在哪里添加以确保不添加任何重复记录?

2024-06-06 08:01:13 发布

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

我正试图根据从视频捕获中获取的编码,并根据从另一个表中获取的现有编码验证,将名称、ID和电子邮件输入到一个表中。我应该在哪里向该查询添加IF NOT EXISTS子句或ON DUPLICATE control以确保没有任何重复记录? 以下是插入查询:

for encodeFace, faceloc in zip(encodesCurFrame, facesCurFrame):
        y1,x2,y2,x1 = faceloc
        cv2.rectangle(img, (x1,y1), (x2,y2), (0,255,0), 2)
        threshold=0.4
    

insert_script = "INSERT INTO meeting1(STUDENTID,STUDENTNAME,STUDENTEMAIL) SELECT STUDENTID,STUDENTNAME,STUDENTEMAIL FROM encodings WHERE sqrt(power(CUBE(array[{}]) <-> ENCODINGS, 2)) <= {} ".format(','.join(str(s) for s in encodeFace), threshold) + "ORDER BY sqrt(power(CUBE(array[{}]) <-> ENCODINGS, 2)) ASC LIMIT 1".format(','.join(str(s) for s in encodeFace))

我想添加另一个验证,如果存在与当前时间不同的同一记录,那么它可以添加该记录。我该怎么做呢


Tags: in编码forthresholdsqrtpowerx1x2
2条回答

以下是您的问题的一些好链接:

https://codingsight.com/sql-insert-into-select-5-easy-ways-to-handle-duplicates/

https://www.tutorialspoint.com/mysql/mysql-handling-duplicates.htm

除此之外,您还可以使用pandas dataframe:

import pandas as pd

df = pd.read_csv('filename.csv')

df = df.drop_duplicates()

df.to_csv('filename_edited.csv')

解决办法相当简单。下面是我如何添加它的

insert_script = "INSERT INTO meeting1(STUDENTID,STUDENTNAME,STUDENTEMAIL) SELECT STUDENTID,STUDENTNAME,STUDENTEMAIL FROM encodings WHERE sqrt(power(CUBE(array[{}]) <-> ENCODINGS, 2)) <= {}".format(','.join(str(s) for s in encodeFace), threshold) + "ORDER BY sqrt(power(CUBE(array[{}]) <-> ENCODINGS, 2)) ASC LIMIT 1".format(','.join(str(s) for s in encodeFace))+ "ON CONFLICT (STUDENTID) DO NOTHING"

我使用+来添加INSERT语句的延续

相关问题 更多 >