docker run --name cj-mysql \
-e MYSQL_ROOT_PASSWORD=1234 \
-d mysql:8.0 \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_unicode_ci
pip install PyMySQL
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
engine = create_engine("mysql+pymysql://admin:1234@0.0.0.0:3306/dev")
SessionLocal = sessionmaker(
bind=engine,
autocommit=False,
autoflush=False,
)
Base = declarative_base()
from sqlalchemy import Boolean, Column, Integer, String
from .database import Base
class User(Base):
__tablename__ = "user"
id = Column(Integer, primary_key=True)
email = Column(String(255), unique=True, index=True)
password = Column(String(255))
is_active = Column(Boolean, default=True)
from pydantic import BaseModel
class UserBase(BaseModel):
email: str
class UserCreate(UserBase):
password: str
class User(UserBase):
id: int
email: str
is_active: bool
class Config:
orm_mode = True
from typing import List
from fastapi import Depends, FastAPI, HTTPException
from sqlalchemy.orm import Session
from . import models, schemas
from .database import SessionLocal, engine
models.Base.metadata.create_all(bind=engine)
app = FastAPI()
def get_db():
db = SessionLocal()
try:
yield db
finally:
db.close()
@app.post("/users", response_model=schemas.User)
def create_user(user: schemas.UserCreate, db: Session = Depends(get_db)):
existed_user = db.query(models.User).filter_by(email=user.email).first()
if existed_user:
raise HTTPException(status_code=400, detail="Email already registered")
user = models.User(email=user.email, password=user.password)
db.add(user)
db.commit()
return user
@app.get("/users", response_model=List[schemas.User])
def read_users(db: Session = Depends(get_db)):
return db.query(models.User).all()
pip install sqlalchemy
pip install cryptography
uvicorn app.main:app --host 0.0.0.0 --port 8000 --realod
실행 !
테이블 생성이 잘되는지 확인해보자.
docker exec -it cj-db mysql -uadmin -p



use dev -> dev를 database를 선택한 것이다.
show tables; -> table을 확인해본다.




@app.get("/users", response_model=List[schemas.User])
def read_users(db: Session = Depends(get_db)):
return db.query(models.User).all()
from pydantic import BaseModel
class UserBase(BaseModel):
email: str
class UserCreate(UserBase):
password: str
class User(UserBase):
id: int
email: str
is_active: bool
class Config:
orm_mode = True