mysql과의 연결성은 다음과 같음
[db]
sql_connection = mysql+pymysql://my_database:pass@mysqlurl/my_database_name?charset=utf8
mysql안에 my_database_name이라는 database를 만들어 둔 상태에서 연결
처음부터 구성한 것은 아니라서 query와 model 선언에 대한 것만 작성
import sqlalchemy as sa
class DataBaseModel(base_model.Base, base_model.ModelBase):
__tablename__ = 'mysql_table'
option1 = sa.Column(sa.String(20), nullable=False)
created_dt = sa.Column(sa.Datetime, nullable=False)
__table_args__ = (
sa.UniqueConstraint('option1'))
def __init__(self, check_exc=True):
super(DataBaseModel, self).__init__()
basemodel에 대해 이해가 부족하여 해당 부분의 설명과 설정을 건너 뜀
__tablename__ 는 연결된 mysql의 database에서 정의된 table이름을 정확히 작성
sa.Column은 해당 table에서 정의된 Column을 연결
type은 여러가지가 있는데 text나 LargeBinary 등 특정 타입이 필요할 경우 검색해서 사용
model을 정의하였다면 db에 query를 할 명령문이 필요한데 repository라고 표현
clss MyDbRepo(base_repository.BaseRepo)
def get_data(self, option1):
session = self.get_session() # baserepo에 있는 메소드
query = session.query(DataBaseModel)
query = query.filter(DataBaseModel.created_dt > datetime('2023-03-13', '%Y-%m-%d'))
return query.one() # 하나만 반환 all() 전부다 반환
23년 03월 13일 보다 이후 데이터를 하나 쿼리 없으면 오류 반환
first로 할 경우 없으면 None으로 반환
all일 경우 전부 반환 없으면 None
sqlalchemy는 비교적 간단하게 다룰 수 있지만 쿼리문이 복잡해 질 경우 사용에 제한이 있을 수 있음
'Python' 카테고리의 다른 글
Python Request (0) | 2024.05.23 |
---|