728x90
[관리자 페이지] Admin Page - 회원가입 구현하기 #1
아주 간단한 회원 가입을 위해 먼저 DB -> Server -> Front 순으로 구현해봅니다.
DB 는 MariaDB 11
Server는 FastAPI
Front는 NextJS
를 사용합니다.
Python ORM 라이브러리인 sqlAlchemy 로 데이터를 조회/등록/수정/삭제합니다.
1. User Table 만들기
회원 정보는 USER_ID 와 PASSWORD 만을 가지고 있습니다.
MariaDB에 어드민 페이지를 위한 데이터베이스와 User를 만들고 권한을 부여합니다.
프로젝트 이름은 HIIO_ADMIN 으로 정했습니다.(지금)
DB NAME 은 HIIO_ADMIN
USER 는 hiio420으로 생성합니다.
CREATE DATABASE HIIO_ADMIN;
CREATE USER 'hiio420'@'%' INDENTIFIED BY '<password>';
GRANT ALL PRIVILEGES ON HIIO_ADMIN.* TO 'hiio420'@'%' IDENTIFIED BY '<password>';
sql 쿼리로 테이블을 만들수도 있지만
sqlAlchemy를 이용해 봅니다.
디렉토리 구조는 아래와 같습니다.
.
┣━database
┃ ┣━entity
┃ ┣━__init__.py
┃ ┣━base.py
┃ ┣━user.py
┃ ┣━__init__.py
┃ ┣━core.py
┃
┣━README.md
┣━.gitignore
pip 로 mariadb와 sqlAlchemy를 설치합니다.
pip install mariadb
pip install sqlAlchemy
mariadb는 DB 연결에 쓰입니다.
core.py에 DB 연결을 위한 URL을 생성하고 create_engine method로 engine을 만들어 줍니다.
entity 디렉토리에는 DB entity 관련 class 들을 위치 시킵니다.base.py 에는 DeclarativeBase 상속받는 Base class를 만들고 user.py에는 Base class를 상속받는 User class를 만들어서 create_all()로 테이블을 생성해 줍니다.
# database/core.py
from sqlalchemy import URL, create_engine
url = URL.create(drivername="mariadb+mariadbconnector", username="hiio420", password="...", host="...",
port="...", database="HIIO_ADMIN")
engine = create_engine(url)
# database/entity/base.py
from sqlalchemy.orm import DeclarativeBase
class Base(DeclarativeBase):
pass
# database/entity/user.py
from sqlalchemy import Column, String
from database.entity.base import Base
class User(Base):
__tablename__ = "USER"
__table_args__ = {
'comment': 'USER TABLE'
}
id = Column("USER_ID", String(20), primary_key=True, comment="USER ID")
password = Column("PASSWORD", String(120), nullable=False, comment="USER PASSWORD")
root 디렉토리에 main.py 를 만들어서 실행 시켜 보면 User 테이블이 만들어 진 것을 볼 수 있습니다.
# main.py
from database import engine, Base
if __name__ == '__main__':
Base.metadata.drop_all(engine)
Base.metadata.create_all(engine)
728x90
'project > 관리자 페이지' 카테고리의 다른 글
[관리자 페이지] Admin Page - 회원가입 구현하기 #4 비밀번호 암호화 (0) | 2024.03.31 |
---|---|
[관리자 페이지] Admin Page - 회원가입 구현하기 #3 Insert User Data (0) | 2024.03.30 |
[관리자 페이지] Admin Page - 회원가입 구현하기 #2 API Router (0) | 2024.03.29 |
[관리자 페이지] Admin Page - 로그인 프로세스 생각해보기 #2 (0) | 2024.03.29 |
[관리자 페이지] Admin Page - 로그인 프로세스 생각해보기 #1 (0) | 2024.03.28 |