-
Python MySQL: 중복 row 인지 확인하기컴퓨터/MySQL 2020. 12. 15. 10:30728x90반응형
위와 같이 id, title, ...로 이루어진 row들이 있는 데이터베이스가 있다.
id는 primary key이고, id를 INSERT하기 전에 중복인지 확인하고 싶었다.
db 초기화
import mysql.connector db = mysql.connector.connect( host="localhost", user=os.environ["MYSQL_USER"], password=os.environ["MYSQL_PASSWORD"], database="mydb", charset="utf8", ) cursor = db.cursor(buffered=True)
중복 row 체크
왜 빠를까? 만약 id가 기본 키라면 인덱싱이 된다.
인덱스 스캔은 테이블 스캔보다 빠르니까 크기에 관계없이 동일한 성능을 보여준다.
# query는 INT여도 %s로 한다. DUPLICATE_COMMAND = "SELECT EXISTS(SELECT * FROM dbtable WHERE id = %(id)s)" cursor.execute(DUPLICATE_COMMAND, {"id": postId}) # connector는 pyformat을 사용한다. # 결과는 row하나만 return하므로, fetchone isDup = cursor.fetchone()[0] # 튜플로 나온다. (1, ) if isDup: continue # postId exists
0 아니면 1 728x90'컴퓨터 > MySQL' 카테고리의 다른 글
Python MySQL: with OPEN_DB 만들기 (0) 2020.12.15 MySQL 서비스가 로컬 컴퓨터에서 시작했다가 중지되었습니다. (0) 2020.12.15 Python: MySQL 사용하기 (0) 2020.12.14