DB/Sqlalchemy

[SQLAlchemy] (5-2) DB driver 종류 (postgresql)

yubi5050 2024. 9. 18. 15:46

개요

해당 글은 Sqlalchemy 공식문서를 정리한 것이다.

Sqlalchemy에서 postgresql에 지원하는 여러가지 Driver 들에 대해 알아본다.

postgresql은 psycopg2, pg8000, asyncpg 다.

https://docs.sqlalchemy.org/en/20/dialects/postgresql.html#dialect-postgresql

 

 

1. psycopg2

공식 문서 : https://pypi.org/project/psycopg2/

특징

- fast-executions-helpers 라는 성능 개선 가능 (https://www.psycopg.org/docs/extras.html#fast-execution-helpers)

- batch insert 관련 유연, 강점 (관련 키워드 insertmanyvalues 등)

- psycopg <- 해당 드라이버는 psycopg2 이전 버전 (사용하는 문법 등이 좀 상이함)

 

연결 방법 

# 연결 string
# postgresql+psycopg2://user:password@host:port/dbname[?key=value&key=value...]

engine = create_engine(
    "postgresql+psycopg2://scott:tiger@localhost/test",
    isolation_level="SERIALIZABLE",
)

# ssl connection
# "postgresql+psycopg2://scott:tiger@192.168.0.199:5432/test?sslmode=require"

 

pg8000

공식 문서 : https://pypi.org/project/pg8000/

특징

- psycopg2 와 동일한 격리 수준 설정을 제공

- batch insert 관련 유연, 강점 (관련 키워드 insertmanyvalues 등)

- psycopg <- 해당 드라이버는 psycopg2 이전 버전 (사용하는 문법 등이 좀 상이함)

 

연결 방법 

# 연결 string
# postgresql+pg8000://user:password@host:port/dbname[?key=value&key=value...]

engine = create_engine(
    "postgresql+pg8000://user:pass@host/dbname", client_encoding='utf8'
)

# ssl connection
import ssl
ssl_context = ssl.create_default_context()
engine = sa.create_engine(
    "postgresql+pg8000://scott:tiger@192.168.0.199/test",
    connect_args={"ssl_context": ssl_context},
)

 

asyncpg

공식 문서 : https://magicstack.github.io/asyncpg/current/

특징

- asyncio 비동기 관련 프로젝트

 

연결 방법 

# 연결 string
# postgresql+asyncpg://user:password@host:port/dbname[?key=value&key=value...]

from sqlalchemy.ext.asyncio import create_async_engine
engine = create_async_engine("postgresql+asyncpg://user:pass@hostname/dbname")

 

psycopg2cffi

공식 문서 : https://pypi.org/project/psycopg2cffi/

특징

- CFFI는 C 계층에 사용하는 것 

- PyPy에서 사용하기에 적합