
pip install psycopg2-binary
psycopg2 대신 psycopg2-binary는 휠로 배포되어 컴파일 없이 설치 가능합니다.
import psycopg2
conn = psycopg2.connect(
host="localhost",
port=5432,
database="your_db",
user="your_user",
password="your_password"
)
conn 객체를 통해 쿼리 실행 가능cur = conn.cursor()
cur.execute("SELECT version();")
version = cur.fetchone()
print("PostgreSQL 버전:", version[0])
cur.close()
conn.close()
conn = psycopg2.connect(...)
cur = conn.cursor()
cur.execute("""
INSERT INTO users (name, email)
VALUES (%s, %s)
""", ("Alice", "alice@example.com"))
conn.commit()
cur.close()
conn.close()
execute()에서 %s + 튜플 전달로 안전하게 처리cur = conn.cursor()
cur.execute("SELECT id, name FROM users")
rows = cur.fetchall()
for row in rows:
print(f"ID: {row[0]}, Name: {row[1]}")
# UPDATE
cur.execute("UPDATE users SET name = %s WHERE id = %s", ("Bob", 2))
# DELETE
cur.execute("DELETE FROM users WHERE id = %s", (2,))
conn.commit()
많은 요청을 처리할 경우 커넥션 풀 사용이 유리합니다.
from psycopg2 import pool
pg_pool = pool.SimpleConnectionPool(1, 10,
user="your_user",
password="your_password",
host="localhost",
port=5432,
database="your_db"
)
conn = pg_pool.getconn()
# 사용 후 반납
pg_pool.putconn(conn)
try:
conn = psycopg2.connect(...)
cur = conn.cursor()
cur.execute("YOUR QUERY")
conn.commit()
except Exception as e:
print("에러 발생:", e)
conn.rollback()
finally:
cur.close()
conn.close()
def add_user(name, email):
with psycopg2.connect(...) as conn:
with conn.cursor() as cur:
cur.execute("INSERT INTO users (name, email) VALUES (%s, %s)", (name, email))
def list_users():
with psycopg2.connect(...) as conn:
with conn.cursor() as cur:
cur.execute("SELECT id, name, email FROM users")
return cur.fetchall()
add_user("Charlie", "charlie@example.com")
for user in list_users():
print(user)