일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- ദ്ദി( ◠‿◠ )
- 양림동티룸
- 스프링부트환경설정
- 하나이름생각이나지않고
- 광주꾸덕꾸덕
- CSS
- 매력이다이다
- 빈생성에러
- 뷰리졸버설정
- 소스코드보는법익히기
- 기세이다
- 표준프레임워크
- 기본소스코드끌어오기
- 광주광역시운암동
- fastapi
- 운암동돈까스맛집
- 달달한하루
- 가이아티룸
- 티파라찌
- 운암동점심
- 자바파일업로드
- 소스분석
- 다시또봐요
- 강의리추어탕본점
- 광주광역시이색카페
- 디저트는
- 분위기가예뻐요
- 광주광역시동구예쁜카페
- 전체파일내키워드찾기
- 담백하답니다
Archives
- Today
- Total
개발자 구겹이
fastapi sqlalchemy 데이터베이스 연동 본문
데이터베이스 연동을 할 때 기본적으로 설정해주어야 할 사항들
0. 엔진설정
1. 그들만의 규칙으로의 url 설정
2. 테이블의 구조를 생성해줄 스키마 작성
> Column이라는 속성을 사용하여 해당 컬럼의 데이터 타입과 길이 , 기본키로 쓸것인가 등을 설정해줌
3. session 생성에 대한 클라스객체와 이것을 인스턴스화
4. middleware와 webserver 기능을 하는 각각의 import 거리들
fastapi sqlalchemy에서 사용할 수있는 엔진, 베이스, 쿼리 등의 제반사항들에 대해
버전이 업될수록 간략화되어가고 있다.
최신 document를 읽어보면
아래의 코드들로 엔진 설정과 미들웨어, 세션 생성 등을 완료할 수 있다는 것을 알 수 있다.
# 데이터베이스 연결을 위한 기본 생성 필요 사항들 db.py
from sqlalchemy.orm import sessionmaker, scoped_session
from sqlalchemy import create_engine
from back.core.settings import settings
from sqlalchemy.ext.declarative import declarative_base
import logging
import aiomysql
import asyncio
logging .basicConfig(level=logging.DEBUG)
DATABASE = settings.database_url
ENGINE = create_engine(DATABASE,echo=True)
SESSION = scoped_session(sessionmaker(bind=ENGINE,autoflush=True,autocommit=False))
BASE = declarative_base()
BASE.query = SESSION.query_property()
# 데이터를 저장할 테이블 구조를 정의 models.py
from sqlalchemy import Column, String, TIMESTAMP
from datetime import datetime, timezone
from .connect import BASE
class UploadType(BASE):
__tablename__ = 'uploadtype'
id = Column(String(20),primary_key=True,default="cccc")
hp_logo = Column(String(255))
color = Column(String(20),index=True)
hp_name = Column(String(100),index=True)
upload_time = Column(TIMESTAMP, index=True,default=datetime.now(timezone.utc))
# 전체적으로 통일적인 환경설정을 위해 불러다쓸 정보들 settings.py
from pydantic_settings import BaseSettings
import aiomysql
from typing import Any
class Settings(BaseSettings):
app_name : str = 'app_name'
debug: bool = False
database_url : Any = 'mysql+{sqlconnector}://{username}t:{password}@l{host}t:{port}/{db_schema_name}'
class Config:
env_file = 'config.yaml'
settings = Settings()
main.py
from fastapi import FastAPI,Depends,Request,Form, HTTPException
from fastapi.middleware.cors import CORSMiddleware
from fastapi.responses import HTMLResponse
from back.database.dbimport BASE,ENGINE,SESSION
from back.database.models import UploadType
app = FastAPI(debug=True)
app.add_middleware(
CORSMiddleware,
allow_origins=['*'],
allow_credentials=True,
allow_methods=['*'],
allow_headers=['*'],
)
def remove_table():
BASE.metadata.drop_all(ENGINE, checkfirst=True)
def create_table():
BASE.metadata.create_all(bind=ENGINE, checkfirst=True)
@app.on_event("startup")
async def startup_event():
remove_table()
create_table()
fastapi에서는 특별한 상황이 아니고서는
유저가 데이터를 입력한 것을 전송하는데 get을 사용하지 않는다.
post를 사용하여 유저입력데이터를 request함
졸릴때는 자고 일어나기 ʅ(◞‿◟)ʃ
'python > PythonLang' 카테고리의 다른 글
파이썬 프로젝트 생성 순서 (0) | 2024.07.20 |
---|---|
python프로젝트 build _ re-build 언제 해야함? (0) | 2024.07.17 |
파이썬 프로젝트를 시작할 때 < wheel, setuptools (0) | 2024.07.07 |
× Building wheel for httptools (pyproject.toml) did not run successfully. with vscode 파이썬프로젝트에러 (0) | 2024.07.03 |
python _ 파이썬 파일 구동하기 명령어 cmd (2) | 2024.06.30 |