sqlalchemy
쿼리구문 스타일에는 두가지로 나뉜다.
1.0
스타일2.0
스타일
SQLAlchemy
버전이 2.0
으로 되면서 바뀐 2.0
스타일이 기존 database
에서 조회하는 방식과 유사한 방식이라 이질감
이 덜하다. 2.0
에서 1.0
스타일도 지원하기에 혼용
해서 사용해도 무방하다.
최신버전의 스타일인
2.0
스타일
select(UserEntity)
.join(UserRoleEntity, UserEntity.uid == UserRoleEntity.uid)
.where(UserRoleEntity.role_id.in_(user_role))
def select_user_by_user_role(self, user_role):
"""
Select user by user role
:param user_role: tuple of user role ids
:return: List of user by user role from tbl_user
"""
try:
select_user = (
select(UserEntity)
.join(UserRoleEntity, UserEntity.uid == UserRoleEntity.uid)
.where(UserRoleEntity.role_id.in_(user_role))
)
self.logger.info(
f"[SELECT] select_user_by_user_role: UserEntity, UserRoleEntity\n"
f"# users: {len(select_user)}"
)
return select_user
except Exception as e:
self.logger.error(
f"[ERROR] select_user_by_user_role: UserEntity, UserRoleEntity\n"
f"# Error: {e}"
)
raise
고전적인
1.0
스타일
select_user = (
self.session.query(UserEntity)
.join(UserRoleEntity, UserEntity.UID == UserRoleEntity.UID)
.filter(UserRoleEntity.role_id.in_(user_role))
.all()
)