본문 바로가기
카테고리 없음

파이썬 postgresql 데이터베이스 사용 가이드 (초보자를 위한)

by python pro 2023. 2. 3.
반응형

Python Postgresql은 Postgresql 데이터베이스를 Python 언어로 제어할 수 있는 라이브러리입니다. Postgresql은 관계형 데이터베이스를 지원하며, 대용량 데이터를 관리할 때 성능이 우수합니다.

 

설치하는 방법

$ pip install psycopg2

 

데이터베이스 연결하는 방법

import psycopg2

connection = psycopg2.connect(
    host="hostname",
    user="username",
    password="password",
    dbname="database_name"
)

 

테이블 생성하는 방법

cursor = connection.cursor()
cursor.execute("CREATE TABLE users (id SERIAL PRIMARY KEY, name TEXT, age INTEGER)")
connection.commit()

 

데이터 삽입하는 방법

cursor.execute("INSERT INTO users (name, age) VALUES (%s, %s)", ("John", 25))
connection.commit()

 

데이터 조회하는 방법

cursor.execute("SELECT * FROM users")
print(cursor.fetchall())

 

데이터베이스 연결 종료하는 방법

connection.close()

 

장고나 ORM을 지원하는 웹프레임워크를 사용하면 SQL을 직접 작성하는 경우가 많지는 않지만, 그래도 이러한 방식으로도 데이터베이스 연결, 쿼리실행을 하는 법은 당연히 알고 있어야 하는 기초적인 부분입니다. 아래에서는 간단한 통합 예제로 조금 더 내용을 확인해보세요.

 

import psycopg2

def create_table(connection):
    cursor = connection.cursor()
    cursor.execute("CREATE TABLE IF NOT EXISTS users (id SERIAL PRIMARY KEY, name TEXT, age INTEGER)")
    connection.commit()

def add_user(connection, name, age):
    cursor = connection.cursor()
    cursor.execute("INSERT INTO users (name, age) VALUES (%s, %s)", (name, age))
    connection.commit()

def get_all_users(connection):
    cursor = connection.cursor()
    cursor.execute("SELECT * FROM users")
    users = cursor.fetchall()
    return users

def update_user(connection, name, age, id):
    cursor = connection.cursor()
    cursor.execute("UPDATE users SET name = %s, age = %s WHERE id = %s", (name, age, id))
    connection.commit()

def delete_user(connection, id):
    cursor = connection.cursor()
    cursor.execute("DELETE FROM users WHERE id = %s", (id,))
    connection.commit()

def main():
    connection = psycopg2.connect(
        host="hostname",
        user="username",
        password="password",
        dbname="database_name"
    )
    
    create_table(connection)
    add_user(connection, "John", 25)
    add_user(connection, "Mary", 30)
    print(get_all_users(connection))

    update_user(connection, "Jane", 28, 1)
    print(get_all_users(connection))

    delete_user(connection, 2)
    print(get_all_users(connection))

    connection.close()


if __name__ == "__main__":
    main()

 

 

우선, create_table(connection) 함수는 users 테이블을 생성합니다.

add_user(connection, name, age) 함수는 사용자 정보를 삽입합니다.

get_all_users(connection) 함수는 모든 사용자 정보를 조회합니다.

update_user(connection, name, age, id) 함수는 사용자 정보를 수정합니다.

delete_user(connection, id) 함수는 사용자 정보를 삭제합니다.

 

main() 함수에서는 데이터베이스와의 연결을 생성하고, 위에서 정의한 함수들을 사용하여 사용자 정보를 관리하고 출력합니다. 함수들은 인자로 connection을 받는 것을 볼 수 있습니다. 각 함수마다 connection을 생성하는 것이 아니라 인자로 전달받는 것을 볼 수 있는데, 이는 여러 함수를 실행할 때마다 연결을 생성하지 않고 하나의 연결을 재사용하면서, 성능을 향상시키는 것이 목적입니다.

 

코드에서는 commit() 함수를 사용하여 데이터베이스에 반영하는 것을 볼 수 있습니다. 이는 SQLite와는 다르게 Postgresql에서는 데이터를 삽입, 수정, 삭제할 때마다 반드시 commit() 함수를 사용해야 데이터베이스에 반영됩니다.

 

마지막으로, close() 함수를 사용하여 연결을 종료하는 것을 잊지 마시길.

반응형

댓글