session 3

SQLAlchemy _ add() 와 add_all() 사용법과 차이점

add()와 add_all() add()와 add_all() 은 sqlalchemy session의 메서드로서 DB에 데이터를 넣을 때 사용합니다. 메서드의 이름에서 보면 알다시피 add는 단일 insert이고 add_all 은 bulk insert입니다. 오늘은 이 둘의 사용법에 대해서 알아보겠습니다. add() 여기 3개의 이름을 DB에 넣어야 한다고 해봅시다. 3개의 데이터는 각각 첫 번째 요소가 id, 두 번째 요소가 이름입니다. names = [ [1, "변덕순"], [2, "장득현"], [3, "고문용"], ] 이를 add()로 넣는다면 다음과 같은 코드를 작성할 수 있습니다. ('Name'은 model class입니다) names = [ [1, "변덕순"], [2, "장득현"], [3, "고..

SQLAlchemy 1.x 와 2.0의 Query 스타일 비교

SQLAlchemy 2.0 SQLAlchemy 2.0에서는 query를 생성할 때 2.0 스타일을 사용할 수 있습니다. 2.0 스타일은 기존의 Session.query()가 아닌 select() 등의 메소드로 생성한 쿼리를 Session.execute()로 전달하여 DB와 통신할 수 있습니다. 현재 공식문서에서는 기존 스타일의 ORM을 제거할 계획은 없다고 하며, 어떤 스타일이든 함께 사용할 수 있다고 합니다. 다만, SQLAlchemy를 비동기로 구현할 경우 AsyncSession 클래스는 Session.query()를 지원하지 않으므로 2.0 스타일을 사용해야합니다. Within the ORM, 2.0 style query execution is supported, using select() cons..

SQLAlchemy에서의 비동기 쿼리 (feat. 2.0 Style)

AsyncSession을 통한 비동기 DB 통신 SQLAlchemy 에서는 DB와 비동기로 통신하기 위해서 AsyncSession 을 사용합니다. 그런데 AsyncSession을 사용하게 되면 ORM방식도 바뀌는데요. SQLAlchemy 공식문서에서는 2.0 스타일 쿼리를 사용한다고 합니다. Synopsis - ORM Using 2.0 style querying, the [AsyncSession] class provides full ORM functionality. Within the default mode of use, special care must be taken to avoid lazy loading or other expired-attribute access involving ORM relati..