반응형
Python과 Postgresql과의 통신은 Psycopg2를 통해 이뤄지게 된다.
연동하면서 사용하는 방식
1) 기존에 Dbeaver 등을 통해 데이터베이스의 구조를 대략적으로 파악
2) Psycopg2를 통해 데이터베이스와 파이썬을 연결
3) 커서를 생성하고, 이를 통해 쿼리를 보냄
4) 결과를 받아서 활용
모듈에 대한 자세한 설명은 홈페이지를 통해 확인할 수 있다.
https://www.psycopg.org/docs/index.html
1. INSTALL
pip install psycopg2 를 통해서 패키지를 설치
2. CONNECTION AND CURSOR
connect 함수를 통해서 데이터베이스에 연결한 뒤(커넥션 생성), 커넥션에서 커서를 생성
(하나의 인자로 전달하여 연결하는 방식도 있음)
3. SELECT
execute를 통해 쿼리문을 수행하고, 결과는 fetchone, fetchmany, fetchall 을 통해 받는다
cur.execute('SELECT * FROM actor;')
fetchone, fetchmany, fetchall 중 어떤 것을 사용할 것인가?
→ 시스템 부하를 고려하면서 사용하는 것이 좋다
execute에서 수행한 query의 결과가 모두 return되기 전까지 커서는 뒤로 이동하면서 결과를 return 한다는 점에 유의할 것
✓ fetchone: 쿼리 결과물을 하나씩 받으며, 실행할 때 마다 다음 결과를 return 한다.
✓ fetchall: 쿼리 결과물을 모두 return 한다.
(결과를 모두 return 하기 때문에 이 이후에 fetch를 수행하게 되면 empty 결과가 return 됨)
일반적인 SELECT 문과 마찬가지로 WHERE를 통해 조건을 거는 것도 가능하다.
만약 쿼리문에 문제가 있다면 postgresql과 같이 에러메시지를 출력한다
(이렇게 에러가 발생했을 때는 rollback을 수행해줘야 함)
conn.rollback()
4. CREATE
execute를 통해 쿼리문을 수행한다
cur.execute('CREATE TABLE tttt (col1 SERIAL NOT NULL, col2 INT, col3 INT);')
commit하여 테이블을 생성한다(commit 하지 않으면 테이블 생성이 반영되지 않음).
conn.commit()
CREATE와 관련된 다른 기능들도 마찬가지로 수행할 수 있다
cur.execute('CREATE TABLE tttt2 (LIKE actor);')
conn.commit()
5. INSERT/DELETE/UPDATE
execute를 통해 INSERT/DELETE/UPDATE 쿼리문을 수행한다.
6. USE PLACEHOLDER
복잡한 쿼리문을 사용할 때는 FORMAT을 사용하는 것이 편할 수 있다.
반응형
'Project > Database' 카테고리의 다른 글
StayHub: Real-time Accommodation Search and Sharing Platform (0) | 2023.06.05 |
---|