1. SQLAlchemy
SQLAlchemy는 파이썬에서 ORM을 사용할 수 있게 해주는 대표적인 툴킷이다.
여기서 말하는 ORM(Object Relational Mapping)이란 "객체와 데이터베이스의 관계를 매핑하는 것"을 말한다. 따라서 ORM을 사용하면 RDBMS에서 SQL로 직접 쿼리문을 작성하지 않아도 객체를 통해 원하는 작업을 할 수 있다.
엄밀히는 ORM은 코드에서 Class 객체를 선언함으로써, 데이터베이스의 스키마를 매핑하여 사용할 수 있다.
ORM의 장점은 코드의 가독성이 높아지고, 코드의 재사용 및 유지보수가 용이해지는 것을 들 수 있다.
Class 선언 시에 --repr--함수를 선언해서 사용할 수도 있지만, 꼭 선언할 필요는 없다. 이는 python에 존재하는 representation 메소드로써 데이터 가독성이 조금 더 좋아지도록 하는 역할을 할 뿐이다.
결론적으로 SQLAlchemy의 ORM(Object-Relational Mapper)은 Python 클래스를 관계형 데이터베이스 테이블로 표현하고 SQLAlchemy의 Python 표현 언어를 SQL 쿼리로 변환하여 데이터베이스 작업을 용이하게 합니다.
또한 SQLAlchemy는 데이터베이스 연결을 추상화하고 연결 관리 및 유지 관리를 자동으로 처리합니다. 즉, 개발자는 SQL 쿼리를 직접 작성하지 않고도, 연결 관리 및 쿼리 실행을 처리하는 엔진을 통해 데이터베이스 연결을 설정하여 프로세스를 간소화할 수 있다
2. SQLAlchemy 초기 세팅법
1. 가상환경 설정 (.venv) : 윈도우 기준
(1-1. sqlite를 기본으로 설정)
python -m venv .venv #가상환경 생성
source .venv/Scripts/activate #가상환경 활성화
2. 라이브러리 설치
pip install flask-sqlalchemy
3. flask 내에서 코드 실행
flask shell
4. 객체 생성 (add,commit): 데이터 입력
posting = Posting(username="사용자1", title="파묘",
actors="최민식", story="결국 파묘가 시작되고, 나와서는 안될 것이 나온다", review = "너무 무서웠지만, 몰입감이 엄청난 영화!", star ="5", image_url="이미지 주소")
db.session.add(posting)
db.session.commit()
3. MySQL과 MySQL WorkBench
데이터베이스와 테이블 생성에 앞서 Oracle 홈페이지에서 MySQL과 MySQL WorkBench를 설치해준다.
mySQL은 대표적인 RDBMS이며, MySQL Workbench는 SQL 개발, 관리, 유지 관리 기능을 통합한 포괄적인 시각적 데이터베이스 설계 및 관리 도구이다. 그냥 MySQL 사용이 용이하게 도와주는 도구 정도로 이해하면 된다
사실 스키마를 작성할 때 영화에 대한 평점을 integer가 아닌 별 모양 emoji로 받고 싶어서 MySQL을 기웃거림..ㅎㅎ
MySQL은 utf8외에도 utf8md4를 제공하기 때문에 emoji를 데이터베이스에서 쉽게 처리할 수 있다.
단, emoji를 사용하려면 데이터베이스 생성시 charset을 utf8mb4로 선택하고, default collation은 utf8mb4_unicode_ci로 선택해서 설정해야 한다
그래도 안된다면, 아래의 블로그를 참고할 것.
'TIL' 카테고리의 다른 글
[TIL 2024. 04. 03] 게시물 수정,삭제 | 댓글 수정, 삭제 (0) | 2024.04.03 |
---|---|
[TIL 2024. 04. 02] git pull | 게시글 작성.html을 db에 저장하기 (0) | 2024.04.02 |
[TIL 2024.03. 29] 퀵 정렬 (w. 시간 복잡도) (0) | 2024.03.29 |
[TIL 2024. 03. 28] 해시테이블과 해시충돌 (0) | 2024.03.28 |
[TIL 2024. 03. 27] 모의고사 | zip() | 부분문자열 이어붙여 문자열 만들기 (0) | 2024.03.27 |