database/etc

sqlite // 커넥션 ㅈ같이 생성되지 않게 하기위해선..

부엉이사장 2022. 9. 10. 11:03
curs= conn.cursor()

try :
    insert_std = """
    insert into stdtbl values ('강호동','경북'),('김제동','경남'),('김용만','서울'),
    ('이휘재','경기'),('박수홍','서울');
    """

    insert_club = """
    insert into clubtbl values ('수영','101호'),('바둑','102호'),('축구','103호'),
    ('봉사','104호');
    """

    insert_stdclub = """
    insert into stdclubtbl values (null, '강호동','바둑'),(null, '강호동','축구'),
    (null, '김용만','축구'),(null, '이휘재','축구'),(null, '이휘재','봉사'),
    (null, '박수홍','봉사');
    """

    curs.execute(insert_std)
    curs.execute(insert_club)
    curs.execute(insert_stdclub)

    conn.commit()
    curs.close()
except Exception :
    import traceback
    traceback.print_exc()
    curs.close()

 

 

처음 커넥션을 연결하고 쿼리문들 실행하는 curs.execute나 commit에서 에러가나면

거기서 멈춰버린다.

 

떄문에 마지막에 curs.close()가 실행이 안되서

코드가 다 꼬여버림..

 

내 컴퓨터에선 그냥 vs코드나 db브라우저 껐다 키면 되겠지만

만약 이게 웹상에서 배포가 되어서 쓰이고 있는 상태면 엄청 큰 문제다..

 

그래서 쿼리문 수행할때마다 try, except로 에러처리로 해주고

except에서 curs.close()를 해주면 커넥션이 끊어진다.

에러 처리하고 다시 실행해도 database lock이 안뜨게됨

'database > etc' 카테고리의 다른 글

maria db /cli  (0) 2023.09.26