반응형
Python에서 데이터베이스 코딩을 할 때 DB cursor를 언제 닫을지, execute와 fetch를 구분해서 쓰는 방법들을 잘 이해해야 코드가 안전해지고 간결하게 작성할 수 있다.
지금까지 클래스도 복잡하게 만들어보고, CRUD 함수들을 범용적으로 만들어보고 했는데 나중에 다시보면 복잡하고 그렇다고 굉장히 안전해 보이지도 않는 경우가 많았다. 나름 다년간의 경험으로 최적화된 아래의 코드가 현재로써는 Best이니 부디 이 글을 보게 된 개발자들은 시간도 아끼고 버그도 없는 프로그램을 만드는데에 도움이 되기를 바란다.
1. 베스트 샘플 소스코드
굳이 따로 클래스나 함수를 만들지 말자. 나도 정말 많이 그럴싸하게 만들어 사용해봤는데 SQL문은 필요할때마나 loop 전에 한줄 적어놓는것이 가독성도 좋고 오히려 유지보수가 더 쉽다.
참고로, 아래의 예는 PostgreSQL 이다. 물론 다른 DB도 99% 유사할 것이다.
finally에서 cursor를 close하는 것이 좋다.
import psycopg2
if __name__ == '__main__':
conn = psycopg2.connect(
host='......',
dbname='......',
user='......',
password='......',
port=5432
)
cursor = None
SQL = "SELECT * FROM .... WHERE .....;"
while True:
try:
cursor = conn.cursor()
cursor.execute(SQL)
rows = cursor.fetchall()
for row in rows:
print(row)
except psycopg2.Error as e:
print("An error occurred:", e)
finally:
if cursor is not None:
cursor.close()
time.sleep(10)
반응형
댓글