[SQLALchemy, python,MySQL] date, time, DateTime 자료형 입력하고 불러오기(타임존 적용까지)
SQL알케미와 MySQL로 날짜, 시간 입력하기
SQL알케미로 MySQL에 날짜, 시간을 입력하는 법을 알아보겠습니다. 그리고 날짜를 불러올때 timezone이 aware 가 아닌 naive로 받아오는거 같습니다. 그래서 relpace를 사용해서 타임존(timezone)을 적용해보도록 하겠습니다.
저는 보통 MYSQL로 직접 날짜나 시간을 저장할때는 TimeStamp 컬럼에 now() 함수를 사용하여 시간과 날짜를 입력하는데요 이번에는 SQLALchemy를 이용하여 해보도록 하겠습니다.
테이블 클래스 정의
class Time(Base):
__tablename__ = "time_tbl"
id = Column(Integer,primary_key=True, index=True)
date_time = Column(DateTime(timezone=True))
stamp_time = Column(mysql.TIMESTAMP)
date1 = Column(Date)
time1 = Column(mysql.TIME)
date_time2 = Column(mysql.DATETIME(timezone=True))
- timezone에 True를 해야 DB에 저장될때 timezone까지 저장 되는거 같아 일단 True로 했습니다만 나중에 불러올때는 타임존까지 불러오는건 아닌거 같습니다. 그래서 replace를 통해 타임존을 따로 적용해보도록 하겠습니다. 혹시나 다른 방법을 알고 계시면 알려주시면 감사하겠습니다.
날짜, 시간 입력하기
from sqlalchemy.sql import func
time_db = Time(
date_time=func.now(),
stamp_time=func.now(),
date1="2022-7-16",
time1='23:20:59',
date_time2="1998-12-31 23:59:59")
db.add(time_db)
db.commit()
db.refresh(time_db)
- func.now() 를 이용해서 UTC 시간으로 입력
- date 타입 입력 date = “2022-7-16”
- time 타입 입력 time1='23:20:59' 초까지 입력할것을 추천
- datetime 타입 입력 date_time2="1998-12-31 23:59:59"
날짜 시간 불러오기- replace로 타임존 주입
from sqlalchemy import select
stmt = select(Time)
results = db.execute(stmt).scalars().all()
for result in results:
date_time = result.date_time.replace(tzinfo=datetime.timezone.utc)
date_time2 = result.date_time2.replace(tzinfo=datetime.timezone.utc)
stamp_time = result.stamp_time.replace(tzinfo=datetime.timezone.utc)
print(date_time.astimezone(),'||',stamp_time.astimezone(),'||',date_time2.astimezone())
#
# 출력결과
# 2022-07-17 08:57:54+09:00 || 2022-07-17 08:57:54+09:00 || 1999-01-01 08:59:59+09:00
- result.date_time.replace(tzinfo=datetime.timezone.utc) 로 타임존 주입 후
- .astimezone() 을 하면 현재 한국 시간으로 바뀜
'프로그래밍사업 > 사이드 프로젝트' 카테고리의 다른 글
[git] 코딩(프로그래밍) 공부할 때 깃(git) 활용법(git restore) (0) | 2022.07.26 |
---|---|
[git,ssh] 맥북에서 ssh를 이용해서 깃허브 계정 여러개 사용하기 (0) | 2022.07.24 |
FASTAPI 사용을 위한 SQLAlchemy(ORM) 기초 - 3탄 데이터 가져오기(Read, SELECT문) (0) | 2022.07.07 |
FASTAPI 사용을 위한 SQLAlchemy(ORM) 기초 - 2탄 삭제, 수정 (0) | 2022.07.05 |
SQLAlchemy로 이미 있는 데이터베이스(기존 테이블) 사용하기 (0) | 2022.07.05 |
댓글