본문 바로가기

TIL

[TIL 2024. 04. 01] SQLAlchemy | MySQL DB 테이블 생성

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로 선택해서 설정해야 한다

 

테이블 스키마
유저 테이

 

 

그래도 안된다면, 아래의 블로그를 참고할 것.

(참고자료)