본문 바로가기

SQL/PostgreSQL

Python으로 PostgreSQL 연결하는 방법

python과 PostgreSQL을 연결하는 모듈은

 

psycopg2와 sqlalchemy가 있다.

 

둘이 pandas를 이용하는 것에는 큰 차이는 없는데

read_sql_table은 sqlalchemy와 연결할 때만 동작한다고 하여 sqlalchemy를 선택하였다.

 

연결하는 것은 아래 공식 문서를 참고하였다.

 

Engine Configuration — SQLAlchemy 1.3 Documentation

Engine Configuration The Engine is the starting point for any SQLAlchemy application. It’s “home base” for the actual database and its DBAPI, delivered to the SQLAlchemy application through a connection pool and a Dialect, which describes how to talk

docs.sqlalchemy.org

 

engine = create_engine('postgresql://user:password@host:port/dbname')
engine.connect()

user, password, host, port, dbname에 해당하는 것을 넣어주면 연결된다.

 

 

## 추가

engine이 연결되었으면 Connection Success 문구가 뜨고

만약 실패했으면 Connection Failed 문구와 에러 코드가 뜨도록 만들었다.

engine = create_engine('postgresql://user:password@host:port/dbname)

try:
    engine.connect()
    print("Connection Success")
except SQLAlchemyError as err:
    print("Connection Failed")
    print(err)

 

 

## 추가

DB정보를 따로 보관하기 위해서 DB_info.ini 파일을 만들고

DB_CONFIG안에 user, password, host, port, dbname을 저장해두었다.

 

따라서 configparser 모듈이 필요하고, DB_info.ini 파일을 불러오는 코드를 추가해주었다.

from sqlalchemy import create_engine
from sqlalchemy.exc import SQLAlchemyError
import configparser

config = configparser.ConfigParser()  
config.read('DB_info.ini')

user = config["DB_CONFIG"]["user"]
password = config["DB_CONFIG"]["password"]
host = config["DB_CONFIG"]["host"]
port = config["DB_CONFIG"]["port"]
dbname= config["DB_CONFIG"]["dbname"]

engine = create_engine('postgresql://{}:{}@{}:{}/{}'.format(user,password,host,port,dbname))

try:
    engine.connect()
    print("Connection Success")
except SQLAlchemyError as err:
    print("Connection Failed")
    print(err)

 

## 참고

ini 파일 만드는 방법

'SQL > PostgreSQL' 카테고리의 다른 글

[PostgreSQL] 데이터 삽입 / 행 추가  (0) 2022.08.11
[PostgreSQL] 테이블 생성  (0) 2022.08.11
[PostgreSQL] 데이터 수정 update문  (0) 2022.07.25
[PostgreSQL] 행 / 열 삭제  (0) 2022.04.23