[PYTHON/SQLMODEL] Session 클래스 : delete 메소드를 사용해 테이블 행 삭제하기
■ Session 클래스의 delete 메소드를 사용해 테이블 행을 삭제한다. ※ test.db 파일의 event 테이블에 데이터가 있는 것을 전제로 테스트해야 한다. ▶ 예제
■ Session 클래스의 delete 메소드를 사용해 테이블 행을 삭제한다. ※ test.db 파일의 event 테이블에 데이터가 있는 것을 전제로 테스트해야 한다. ▶ 예제
■ Session 클래스의 add 메소드를 사용해 테이블 행을 수정하는 방법을 보여준다. ※ test.db 파일의 event 테이블에 해당 데이터가 있는 것을 전제로 테스트해야
■ Session 클래스의 get 메소드를 사용해 테이블 행을 구하는 방법을 보여준다. ▶ 예제 코드 (PY)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
from sqlmodel import SQLModel, Session, JSON, Field, Column, create_engine, select from typing import List class Event(SQLModel, table = True): id : int | None = Field(default = None, primary_key = True) title : str image : str description : str location : str tagList : List[str] = Field(sa_column = Column(JSON)) databaseFilePath = "test.db" databaseURL = f"sqlite:///{databaseFilePath}" connectionArgumentDictionary = {"check_same_thread" : False} engine = create_engine(databaseURL, echo = False, connect_args = connectionArgumentDictionary) SQLModel.metadata.create_all(engine) with Session(engine) as session: event = session.get(Event, 5) print(event.id, event.title) """ 5 제목 5 """ |
■ Session 클래스의 exec 메소드를 사용해 테이블을 조회하는 방법을 보여준다. ※ test.db 파일의 event 테이블에 데이터가 있는 것을 전제로 테스트해야 한다. ▶
■ Session 클래스의 add 메소드를 사용해 테이블 행을 추가하는 방법을 보여준다. ▶ 예제 코드 (PY)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
from sqlalchemy import func from sqlmodel import SQLModel, Session, JSON, Field, Column, create_engine, select from typing import List class Event(SQLModel, table = True): id : int | None = Field(default = None, primary_key = True) title : str image : str description : str location : str tagList : List[str] = Field(sa_column = Column(JSON)) databaseFilePath = "test.db" databaseURL = f"sqlite:///{databaseFilePath}" connectionArgumentDictionary = {"check_same_thread" : False} engine = create_engine(databaseURL, echo = False, connect_args = connectionArgumentDictionary) SQLModel.metadata.create_all(engine) with Session(engine) as session: sql = select(func.count(Event.id)) # "SELECT count(event.id) AS count_1 FROM event" eventCount = session.scalar(sql) id = eventCount + 1 newEvent = Event(id = id, title = f"제목 {id}", image = f"이미지 {id}", description = f"설명 {id}", location = f"위치 {id}", tagList = [f"테스트 {id}"]) session.add(newEvent) session.commit() session.refresh(newEvent) |
■ Session 클래스의 scalar 메소드를 사용해 테이블 수를 구하는 방법을 보여준다. ▶ 예제 코드 (PY)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
from sqlalchemy import func from sqlmodel import SQLModel, Session, JSON, Field, Column, create_engine, select from typing import List class Event(SQLModel, table = True): id : int | None = Field(default = None, primary_key = True) title : str image : str description : str location : str tagList : List[str] = Field(sa_column = Column(JSON)) databaseFilePath = "test.db" databaseURL = f"sqlite:///{databaseFilePath}" connectionArgumentDictionary = {"check_same_thread" : False} engine = create_engine(databaseURL, echo = False, connect_args = connectionArgumentDictionary) SQLModel.metadata.create_all(engine) with Session(engine) as session: sql = select(func.count(Event.id)) # "SELECT count(event.id) AS count_1 FROM event" eventCount = session.scalar(sql) print(f"이벤트 수 : {eventCount}") """ 이벤트 수 : 6 """ |
■ metadata 변수의 create_all 메소드를 사용해 모든 테이블을 생성하는 방법을 보여준다. ※ 테이블이 생성되어 있으면 테이블 생성을 하지 않는다. ▶ 예제 코드
■ create_engine 함수를 사용해 데이터베이스 엔진 객체를 만드는 방법을 보여준다. ※ create_engine 함수를 호출해도 데이터베이스 파일이나 관련 테이블들이 생성되지 않는다. ▶ 예제