- django에서 h5를 만들고, fastAPI는 그걸 가져와서 실행하는 역할
- django는 dcoker의 사용이 선택이지만 fastapi는 필수
- 설치 :
pip install fastapi 'uvicorn[standard]'
python -m uvicorn main:app --reload
또는
uvicorn main:app --reload
django와 같은 가상환경으로 설정하고 터미널에서 입력
? 가상환경을 사용하는 이유는?
: 프로젝트마다 격리된 환경(즉, 가상 환경)을 생성함으로써 프로젝트별로 패키지를 관리하기 위함
model은 db와 연결
schema는 react와 연결
- pip install fastapi 'uvicorn[standard]'
- pip install uvicorn
grant all privileges on *.* to 'root'@'%' identified by 'root';
실행
한글 깨짐 발생시 아래 코드 입력 후 도커 이미지를 삭제하고 다시 docker compose up 실행
확인 :
show variables like 'lower_case_table_names';
확인2 :status
Docker compose의 버전이 3.8 이상일 때`
- [mysqld]안에 아래 코드를 추가하고
collation-server = utf8mb4_unicode_ci character-set-server = utf8mb4
- .yml에 아래코드 추가
volumes: ./docker/mysql/conf.d:/etc/mysql/conf.d ./docker/conf.d/initdb.d:/docker-entrypoint-initdb.d
collation-server = utf8mb4_unicode_ci
character-set-server = utf8mb4
volumes:
./docker/mysql/conf.d:/etc/mysql/conf.d
./docker/conf.d/initdb.d:/docker-entrypoint-initdb.d
COPY ./conf.d/my.cnf etc/mysql/my.cnf
chmod 644 /etc/my.cnf
chmod 755 /etc/my.cnf
chmod 644 /etc/mysql/conf.d/my.cnf
chmod 755 /etc/mysql/conf.d/my.cnf
status
로 다시 확인
경로만 오버라이딩 한 경우 my.cnf 파일은 오버라이딩 안됐다.
오버라이딩 실패
오버라이딩 성공
RUN apt update \
&& apt install -y mysql-server-5.7 \ #
&& apt install --no-install-recommends -y tzdata \ #타임존
&& apt clean
로그인은 세션을 생성
- (./docker/mysql/initdb.d:)/docker-entrypoint-initdb.d : (경로)에 있는 쿼리를 실행해서 db로 접근
@app.get("/items/languges/{item_id}") #{item_id}는 request에 id를 부여 (단, id가 없는 create, all 등의 경우는 없다)
from fastapi import APIRouter
router = APIRouter()
@router.<get, post 등>("/경로(prefix)", response_model=None)
async def get_users(db: None):
return [{"user_email":"test1", "password":"1"}, {"user_email":"test2", "password":"1"}]
인공지능에서는 모델만 클래스로 나머지는 함수로 사용한다
- 함수형일 경우 메모리를 사용하지 않기 때문에 더 빠르지만 기억하지 못하기 때문에 단순히 넘겨주는 모델 외의 기능은 함수가 적합
3.10이상 달라지는 점은 참고(내코드는 아직 3.9, 이후 수정 필요)
arbitrary_types_allowed
in Config상황
pip install로 설치 후 import를 했지만 위의 에러가 발생
원인
requirements.txt 파일이 있는 경우 해당 파일에 install한 패키지를 입력하지 않아서 발생
해결
- 해결방법1 : requirements.txt에 설치한 패키지 추가
- 해결방법2 : 아래 코드 추가
class Config: arbitrary_types_allowed = True
- 위 방법이 안되면 howto/docker에 있는 에러 해결 참고
해결
fastapi는 async를 써야지...
해결
my.cnf파일의 mysqld에 다음코드 추가
max_allowed_packet=16M
원인
에러창에 나온 그대로다
해결
클래스 내부에 아래 클래스 두 개중 하나 입력(경우에 따라 안먹는 경우가 있어서 바꿔주면서 적용)
class Config:
BaseConfig.arbitrary_types_allowed = True
class Config:
arbitrary_types_allowed = True
원인
이번에는 오타가 난 경우
해결
에러가 난 맨 윗줄로 가서 오타 여부와 받은 값을 확인
원인
내가 겪은 상황은 하나의 레코드를 넘겨줘야하는 쿼리문에서 뒤에 .first() 같은 내용을 빼서 생긴 문제