이번 포스팅에서는 전에 작성하였던 SQLAlchemy에 대한 간단한 추가 설명을 작성하려고 합니다.
데이터베이스 연결, 질의(Query), 객체-관계 매핑(ORM) 등을 처리하는 데 도움 되는 SQLAlchemy는 강력한 기능을 제공하여 데이터베이스와 상호 작용하는 작업을 훨씬 더 쉽고 효율적으로 만들어 줍니다.
저는 그중에서 각 라이브러리 등이 어떻게 작동하고 어떠한 기능을 가졌는지에 대해서 작성하였습니다.
위에서 언급했듯이 SQLAlchemy는 데이터베이스와 상호 작용하는 작업을 쉽고 효율적으로 만들어 주기 위해 사용하고 있습니다.
데이터베이스를 다루기 위해 사용하는 만큼 다음과 같은 목적들이 있습니다.
이와 같이 SQLAlchemy는 파이썬 개발자들이 데이터베이스와 상호작용하는 데 도움을 주는 강력하고 다재다능한 도구입니다.
SQLAlchemy 각각의 사용법을 정리하였습니다.
목차
1. 데이터베이스 연결
2. ORM(객체-관계 매핑)
3. 세션 관리
4. 질의(Query) 작성
SQLAlchemy는 데이터베이스와 연결을 생성하고 관리하기 위한 도구를 제공합니다.
create_engine
함수를 사용하여 데이터베이스 연결 객체를 생성할 수 있습니다.
이 함수는 다양한 데이터베이스 시스템을 지원하며, URL을 통해 데이터베이스를 연결합니다.
from sqlalchemy import create_engine
# SQLite 데이터베이스에 연결
engine = create_engine("sqlite:///mydb.db")
# MySQL 데이터베이스에 연결
engine = create_engine("mysql://username:password@localhost/dbname")
SQLAlchemy는 ORM을 통해 데이터베이스 테이블을 파이썬 클래스로 나타내는 기능을 제공합니다.
이를 통해 데이터베이스 레코드를 객체로 다룰 수 있습니다.
declarative_base
함수를 사용하여 기본 클래스를 정의하고, 클래스의 속성을 데이터베이스 테이블 열(column)과 매핑할 수 있습니다.
from sqlalchemy.ext.declarative import declarative_base # slqalchemy 모델 만들때 사용
from sqlalchemy import Column, Integer, String
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
username = Column(String)
email = Column(String)
SQLAlchemy는 세션(session)을 통해 데이터베이스 작업을 처리합니다.
sessionmaker를 사용하여 세션을 생성하고, 세션 내에서 데이터 추가, 수정, 삭제 등의 작업을 수행할 수 있습니다.
from sqlalchemy.orm import sessionmaker
# 접속이 끝나더라도 계속해서 연결 상태를 유지시키기 위해 sessionmaker를 통해 세션을 만들어 준다.
Session = sessionmaker(bind=engine)
session = Session()
new_user = User(username='john_doe', email='john@example.com')
session.add(new_user)
session.commit()
SQLAlchemy는 SQL 문을 작성하거나 필터를 적용하는 데 유용한 질의(Query) API를 제공합니다.
이를 통해 데이터베이스 조회 작업을 간편하게 수행할 수 있습니다.
from sqlalchemy import text
# 이름이 'john_doe'인 사용자 검색
user = session.query(User).filter_by(username='john_doe').first()
# 사용자 테이블에서 이메일이 'example.com'으로 끝나는 사용자 수 조회
count = session.query(User).filter(User.email.endswith('example.com')).count()