Data
SQLAlchemy. 조건식의 원하는 곳에 괄호 추가하기
Calendar라는 테이블에 Mapping되는 모델을 다음과 같이 정의했다고 하자. from sqlalchemy import Column, INTEGER from sqlalchemy.orm import declarative_base Base = declarative_base() class Calendar(Base): __tablename__ = "calendar" year = Column(INTEGER, primary_key=True) month = Column(INTEGER, primary_key=True) day = Column(INTEGER, primary_key=True) ... 위 테이블에서 2021년 12월과 2022년 1월의 정보를 얻고자 하면 다음과 같이 SQL Query를 작성할 것이다...
Alembic. 버전 관리 테이블이 생성될 스키마 지정하기
Alembic이 적용된 DB에는 적용된 Revision을 기록하기 위한 `alembic_version`과 같은 테이블이 생성되게 된다. (큰 상관이 없을 수도 있지만) 서비스와 관련된 테이블과 같은 곳에 있는 것은 구분을 어렵게 하므로 다음 방법을 통해 Alembic과 관련된 테이블을 별도의 스키마에 저장할 수 있다. # In env.py, from sqlalchemy.schema import CreateSchema def run_migrations_online(): ... with connectable.connect() as connection: context.configure( connection=connection, target_metadata=target_metadata, include_schem..
SQLAlchemy. CASE WHEN 구문 with Label
from sqlalchemy import case session.query( ..., case( (Table.column == "조건1", "값1"), (Table.column == "조건2", "값2"), else_="예외값", ).label("새로운_칼럼명") ).filter( ... ) 만약 Equality 조건만 있다면 case.value를 사용하여 구문을 단순화할 수 있다. from sqlalchemy import case session.query( ..., case( {"조건1": "값1", "조건2": "값2"}, value=Table.column, else_="예외값", ).label("새로운_칼럼명") ).filter( ... ) 잘못된 내용, 오타, 부정확한 문장 등 어떤 피드백이든 환..
Alembic. 동적으로 DB 접속 정보 만들기
일반적으로 DB 접속 정보는 코드 형상 관리 도구에 포함되지 않아야하지만, Alembic에서 일반적으로 DB 접속 정보를 저장하게 되는 alembic.ini 파일을 DB 접속 정보 때문에 코드 형상 관리 도구에 포함하지 않고 개발자들이 공유하는 방식으로 이용하면 배보다 배꼽이 큰 상황이 될 수 있다. 또한, 개발 환경 별로 DB가 나누어져 있을 경우 Section을 나누어 서로 다른 DB 접속 정보를 넣어줄 수도 있어야 한다. alembic.ini를 이용해 일반적인 Configuration들은 공유하되 DB 접속 정보과 같이 코드 형상 관리 도구에 포함되지 않아야 하는 정보들을 섹션 별로 관리할 수 있는 방법들은 다음과 같다. env.py에서 alembic.ini로 인자 넘기기 1. alembic.ini..