묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨Next.js와 yolov11로 화재감지 시스템 구축하기
pnpm install is not found 오류
훤@□□□□ MINGW64 /c/LeeHwon/FlameGuard/FlameGuard/frontend (main)$ pnpm installbash: pnpm: command not found 이렇게 안 뜨는 이유가 무엇일까요..
-
미해결FastAPI 실전편: JWT와 Redis로 완성하는 인증 시스템
sql_app.db 연동 관련
../src 경로에서sqlite3 sql_app.db 실행 및 접속 이후SQLite version 3.43.2 2023-10-10 13:08:14Enter ".help" for usage hints.sqlite> .tablessqlite> .tablessqlite> post 확인이 안됩니다
-
미해결바이브 코딩: Next.js + FastAPI + Faster-Whisper로 음성 메모 앱 만들기
git 저장소 주소가 어디있나요?
강의 잘 듣고 있습니다. git 주소를 찾을 수 없네요. 감사합니다.
-
해결됨실전! FastAPI 입문
uvicorn 종료 문제
수업 진행 중 코드는 문제가 없지만 컨트롤+c를 눌러도 아무 반응이 없고 uvicorn 종료가 안됩니다 ㅠㅠ해결방법이 있을까요?ㅠㅠ
-
미해결FastAPI 찍어먹기 (FastAPI + React.js + AWS LightSail)
클라우드 docker compose up 에러
cms-1 | /src/entrypoint.sh: line 7: /src/.venv/bin/activate: No such file or directorycms-1 | Waiting for database to be ready...cms-1 | Waiting for database to be ready...cms-1 | /src/entrypoint.sh: line 7: /src/.venv/bin/activate: No such file or directorycms-1 | /src/entrypoint.sh: line 7: /src/.venv/bin/activate: No such file or directorycms-1 | Waiting for database to be ready...cms-1 exited with code 1cms-1 | Waiting for database to be ready...cms-1 | /src/entrypoint.sh: line 7: /src/.venv/bin/activate: No such file or directorycms-1 | Waiting for database to be ready...cms-1 | /src/entrypoint.sh: line 7: /src/.venv/bin/activate: No such file or directorycms-1 | /src/entrypoint.sh: line 7: /src/.venv/bin/activate: No such file or directoryLightsail ubuntu에서 docker compose up 시 위와 같이 entrypoint 쉘에서 /src/.venv/bin/activate 못찾는 에러가 발생합니다...미리 파이썬 가상환경을 만들어 놓아도 에러가 발생해요..ㅠㅠ
-
해결됨실전! FastAPI 입문
왜 return타입이 ToDo라는 스트링인가요?
안녕하세요.항상 좋은 강의 감사드립니다.수업을 듣던중 2:31경에 나오는 리턴타입을 왜 스트링으로 설정하는지 궁금해서 질문드립니다.이상입니다. 감사합니다.
-
미해결FastAPI 찍어먹기 (FastAPI + React.js + AWS LightSail)
schema 클래스의 model_config 속성 관련 질문
안녕하세요! fastapi 입문으로 강사님 강의를 듣게되어 영광입니다. 강의 내용 따라 진행은 잘되고 있으나 강사님이 구현하신 class SubCategoryCreate(BaseModel): model_config = ConfigDict(from_attributes=True) subcategory_name: str category_id: int model_config = { "json_schema_extra": { "example": { "subcategory_id": 1, "subcategory_name": "수도", "category_id": 1 } }이렇게 구현을 하셨는데 model_config 변수가 두번사용 되어 마지막에 사용된 model_config 값이 첫번째 ConfigDict(from_attributes=True) 값을 덮어 씌워 첫번째로 사용된 model_config 변수의 역할이 없어지는것이 아닌가 하여 의문이 들어 왜 같은 변수명으로 덮어 씌우는지 궁금하여 질문 드립니다.
-
미해결FastAPI 완벽 가이드
item_static.html 질문
<h3><a href="/static/link_tp.html">another link</a></h3>링크가 /static으로 시작하기 때문에 정적파일로 간주되고 static 뒤에 붙은 link_tp.html은 app.mount에서 알아서 html문서로 문자열 파싱하나요?
-
해결됨실전! FastAPI 입문
ORM 연관관계
안녕하세요!Nest에서 Fast API로 컨버젼중입니다. Nest는 Many to Many, Many to One 등등이러한 연관관계를 설정해서 테이블을 생성합니다.Fast API에서는 아래 코드처럼 단순히 join만 걸어두고 사용하면 되는 걸까요?? class User(Base): __tablename__ = "user" id = Column(Integer, primary_key=True, index=True) username = Column(String(256), nullable=False) password = Column(String(256), nullable=False) todos = relationship("ToDo", lazy="joined")
-
미해결FastAPI 완벽 가이드
uvicorn으로 로컬서버 올렸으나 사내 타 컴퓨터에서 접속이 안됨
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요.- 먼저 유사한 질문이 있었는지 검색해보세요- 서로 예의를 지키며 존중하는 문화를 만들어가요.- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 강사님. 안녕하세요.현재FAST_API를 구성하여uvicorn app.main:app --reload --host 0.0.0.0 --port 8010위와 같이 로컬서버를 열었습니다.사내에서 프론트엔드쪽에서 제 서버로 접속을 시도하는데 공용 Wifi를 쓰고 있어서 IP주소만 192.168.0.x:8010으로 프론트엔드쪽에 전달을 했습니다. 하지만 프론트쪽에서는 제 로컬 서버로 접속이 안되고 계속 로딩만 되고 있습니다. 로컬에서 swagger를 열어서 서버테스트를 했을 때에는 전혀 문제가 없었는데현재 문제는 공용 라우터 아래 무선 랜을 잡아서 쓰고 있는 두 컴퓨터간의 통신이 안되고 있습니다...하지만 프론트에서 index.html을 5500포트로 열어서 공유한 것을 잘 열립니다.정말 gpt, claude를 쪼아서 물어봤는데도 계속 똑같은 이야기, 방화벽 설정에서 인바운드 포트설정이야기만 합니다혹시 어떤 문제인지 좀.. 도와주십시요. 내일 대표님 앞에서 프로젝트 시연을 해야하는데 지금 ...큰 문제입니다.
-
미해결실전! FastAPI 입문
Oracle DB 연결과 관련해 질문이 있습니다..
Sqlalchemy 라이브러리와 Python-oracledb 드라이버를 이용해 DB 연결을 하려고 하는데 쉽지 않습니다..저는 service name 정보만 있고 SID 정보는 없는 상태인데, 공식문서를 참고해 아래와 같이 접속을 시도해도 에러가 발생합니다..ㅠ 에러 내용 )File "src/oracledb/impl/thin/transport.pyx", line 289, in oracledb.thin_impl.Transport.send_oob_breakOSError: [Errno 22] Invalid argumentDB 접속 코드 )import sqlalchemy engine = sqlalchemy.create_engine("oracle+oracledb://MY_USERNAME:MY_PASSWORD@MY_DB_HOST:MY_DB_PORT/?service_name=MY_DB_SERVIC_NAME")disable_oob=True로 하면 될 것 같은데, sqlalchemy에서 어떻게 해당 값을 세팅해야 하는지 모르겠습니다...ㅠ따로 설정파일을 만들어야 하나요?ㅠㅠ
-
해결됨실전! FastAPI 활용(비동기)
비동기 서버 구성하다 알 수 없는 에러에 빠졌는데...
안녕하세요. 좋은 강의 감사합니다.강의를 기반으로 제 방식대로 서버를 구성하다가 알 수 없는 에러에 빠졌습니다.서버는 정상 구동은 되고, postman으로 root url인 localhost:8000/ 에 request를 날리면 정상적으로 결과값을 반환 받는데localhost:8000/api/recommend?userId=1 만 호출하면 바로 에러메세지 없이 500만 응답으로 받고 있습니다.print(1) 도 서버 로그에 찍히지 않고 서버 로그는 아예 나오질 않네요.localhost:8000/ 에서도 동일하게 서버 로그는 찍히지 않습니다우선 의도는 BaseRepository 클래스를 만들어서 find_by_id 같은 중복 코드를 하나로 관리해보려고 했습니다.의존성 주입 부분은 지피티의 도움을 받아서 위치를 조정했습니다.도저히 어디서 문제가 난건지 알 수 없어서 도움 요청 드립니다 ㅜㅜ# main.py from typing import Dict from dotenv import load_dotenv from fastapi import FastAPI from src.app.app import create_app load_dotenv() app: FastAPI = create_app() @app.get("/") async def health_check_handler() -> Dict[str, str]: return {"statusMsg": "good"} # app.py from contextlib import asynccontextmanager from typing import AsyncGenerator import anyio from fastapi import FastAPI from src.app.endpoints.recommend import router @asynccontextmanager async def lifespan(app: FastAPI) -> AsyncGenerator: limiter = anyio.to_thread.current_default_thread_limiter() limiter.total_tokens = 200 yield def create_app() -> FastAPI: app = FastAPI(lifespan=lifespan) app.include_router(router, prefix="/api") # 다른 설정들(예: 미들웨어, 이벤트 핸들러 등)을 추가할 수 있습니다. return app# connection.py import os import urllib from typing import AsyncGenerator from dotenv import load_dotenv from sqlalchemy.ext.asyncio import AsyncEngine, AsyncSession, async_sessionmaker, create_async_engine load_dotenv() DB_USERNAME: str = os.getenv("DB_USERNAME", "root") DB_PASSWORD: str = os.getenv("DB_PASSWORD", "root") DB_HOST: str = os.getenv("DB_HOST", "127.0.0.1") DB_NAME: str = os.getenv("DB_NAME", "") DB_PORT: str = os.getenv("DB_PORT", "3306") DB_ECHO: bool = os.getenv("DB_ECHO", "true").lower() == "true" if not DB_NAME: raise ValueError("DB_NAME 환경변수가 설정되지 않았습니다.") # 비밀번호 특수문자 허용 encoded_password = urllib.parse.quote_plus(DB_PASSWORD) DATABASE_URL: str = f"mysql+asyncmy://{DB_USERNAME}:{encoded_password}@{DB_HOST}:{DB_PORT}/{DB_NAME}" engine: AsyncEngine = create_async_engine( DATABASE_URL, echo=DB_ECHO, pool_size=10, max_overflow=0, pool_timeout=30, # second pool_recycle=60, # second pool_pre_ping=True, ) SessionFactory = async_sessionmaker(autocommit=False, autoflush=False, bind=engine) async def get_db() -> AsyncGenerator[AsyncSession, None]: session = SessionFactory() try: yield session finally: await session.close()# user_route.py from typing import Dict from fastapi import APIRouter, Depends, status from src.app.dependency.query_param_denpendency import snake_case_query from src.core.common_type import V from src.core.exception.not_found_exceptions import UserNotFoundExceiption from src.db.connection import get_db from src.entity.user import UserEntity from src.repository.user import UserRepository, get_user_repository from src.dto.response.user_response import UserResponse router = APIRouter(prefix="/recommend") @router.get(path="", status_code=status.HTTP_200_OK, response_model=UserResponse) async def get_recommend_schedule( params: Dict[str, V]=Depends(snake_case_query), user_repo: UserRepository=Depends(get_user_repository) ): print(1) user_id: int = int(params.get("user_id", None)) user: UserEntity | None = await user_repo.get_user_by_id(user_id) if not user: raise UserNotFoundExceiption() user = UserResponse.model_validate(user) return user# base_repository.py from typing import Type from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncSession from src.core.common_type import E class BaseRepository: def __init__(self, db: AsyncSession): self.db = db async def get_entity_by_id(self, model: Type[E], entity_id: int) -> E | None: print(2) entity: E | None = await self.db.execute(select(model).where(model.id==entity_id)) return entity.scalars().first() # user_repo.py from fastapi import Depends from sqlalchemy.ext.asyncio import AsyncSession from src.db.connection import get_db from src.entity.user import UserEntity from src.repository.base_repository import BaseRepository def get_user_repository(db: AsyncSession = Depends(get_db)) -> "UserRepository": return UserRepository(db) class UserRepository(BaseRepository): async def get_user_by_id(self, user_id: int) -> UserEntity | None: print(3) return await self.get_entity_by_id(UserEntity, user_id) # user_response.py from datetime import datetime from typing import Optional from pydantic import BaseModel class UserResponse(BaseModel): id: int name: str nickname: str email: str phone: str join_date: datetime updated_at: Optional[datetime] = None deleted_at: Optional[datetime] = None class Config: from_attributes = True 도대체 어디서 문제가 생긴걸까요...
-
미해결FastAPI 완벽 가이드
머신러닝 백엔드 강좌 언제나오나요?
머신러닝 강좌는 언제 오픈하나요? 빨리듣고 싶습니다. ㅎㅎ 일 때문에 빨리 듣고싶은데 프리뷰 필요하시면 연락부탁드립니다.
-
미해결실전! FastAPI 입문
섹션 2, 3의 PATCH API의 차이점
안녕하세요 강의를 듣던 도중 궁금한 것이 생겨 질문드립니다섹션 2에서의 PATCH API는 else문으로 is_done=True를 is_done=False로 바꾸는 처리를 따로 하지않아 True 상태를 False로 못바꾸는 반면에섹션 3에서의 PATCH API는 Ture를 False로 바꿀수 있다고 이해했는데 혹시 맞을까요??웹 개발을 처음 공부하다 보니 이해를 잘 못했나 해서 질문드렸습니다
-
해결됨실전! FastAPI 입문
ORM 테이블 생성
안녕하세요nest로 개발을 진행하다가 fast API로 전향하려는 개발자 입니다.저와 같은 경우는, TypeORM을 사용하고 있었습니다.TypeORM은 아래 코드와 같이 DB와 연결해 놓고 @Entity 어노테이션을 사용하면 테이블이 자동 생성됩니다.강의를 보면 테이블을 생성하는 쿼리를 console로 만들어서 DB SQL에 직접 작성하는 것으로 확인됩니다.FAST API는 NEST처럼 테이블이 자동 생성되는 기능이 없는 걸까요??또한 @ManyToMany @ManyToOne과 같은 어노테이션을 사용하면 연관관계가 쉽게 맵핑되어별도의 join 쿼리 없이도 조회,수정,삭제가 가능합니다.이러한 부분 또한 FAST API는 지원하는 기능이 없는 걸까요?? import { Column, Entity, PrimaryGeneratedColumn } from 'typeorm'; @Entity() export class PostsModel { @PrimaryGeneratedColumn() //알아서 값을 1씩 증가하는 것을 만들어 준다. id: number; @Column() author: string; @Column() title: string; @Column() content: string; @Column() likeCount: number; @Column() commentCount: number; } import { Module } from '@nestjs/common'; import { AppController } from './app.controller'; import { AppService } from './app.service'; import { PostsModule } from './posts/posts.module'; import { TypeOrmModule } from '@nestjs/typeorm'; @Module({ imports: [ PostsModule, TypeOrmModule.forRoot({ //forRoot -> typeOrm과 nestJs을 연결할 수 있는 연결고리를 만드는 것 type: 'postgres', host: '127.0.0.1', port: 5432, username: 'postgres', password: 'postgres', database: 'postgres', entities: [], //데이터베이스와 연동될 모델들 synchronize: true, //nestJS에서 작성하는 typeOrm 코드와 데이터베이스싱크를 자동으로 맞출 것이냐(개발에서는 true, 프로덕션에서는 false) }), ], controllers: [AppController], providers: [AppService], }) export class AppModule {}
-
해결됨실전! FastAPI 입문
테스트 코드 오류
안녕하세요 테스트 코드 사용 중 오류가 잡히지 않아서 문의 드립니다. 강의에서 설명해주신 것처럼 아래와 같이 코드를 작성했지만 오류가 발생합니다.어떻게 해야 할까요? from fastapi.testclient import TestClient from main import app # api들이 있는 app을 검증할 클라이언트 생성 client = TestClient(app=app) def test_health_check(): # api 요청 response = client.get("/") # 반환 값 검증 assert response.status_code == 200 assert response.json() == {"ping": "pong"}아래는 오류 내용 입니다.(fastapi_orm) C:\Users\User\Desktop\Fast_API(ORM)\code\src>pytest ============================================================================= test session starts ============================================================================= platform win32 -- Python 3.10.16, pytest-8.3.5, pluggy-1.5.0 rootdir: C:\Users\User\Desktop\Fast_API(ORM)\code\src plugins: anyio-4.8.0 collected 0 items / 1 error =================================================================================== ERRORS ==================================================================================== _____________________________________________________________________ ERROR collecting tests/test_main.py _____________________________________________________________________ tests\test_main.py:5: in <module> client = TestClient(app) ..\..\..\..\anaconda3\envs\fastapi_orm\lib\site-packages\starlette\testclient.py:399: in __init__ super().__init__( E TypeError: Client.__init__() got an unexpected keyword argument 'app' =========================================================================== short test summary info =========================================================================== ERROR tests/test_main.py - TypeError: Client.__init__() got an unexpected keyword argument 'app' !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Interrupted: 1 error during collection !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ============================================================================== 1 error in 0.86s ===============
-
미해결FastAPI 완벽 가이드
db connect
안녕하세요! 강사님!처음으로 fastAPI를 접하는데 강사님 수업을 통해 배움을 얻어 가게되어 우선 감사 말씀드립니다. DB Connect 세팅 시create_engine 함수를 이용하여 엔진 객체만 생성하여 DB에 연결을 하는데 다른 참고 자료들과 비교하면 모델 클래스 생성은 ORM을 사용하지 않으니 생성을 할필요가 없을테고, sessionmaker 함수를 통한 세션 클래스는 따로 생성하지 않더군요.혹시 sessionmake를 통해 생성된 세션 클래스의 역할과 지금 강의에서는 사용하지 않은 이유를 알 수 있을까요?
-
미해결실전! FastAPI 입문
orm relationship 정의 중 해당 에러 발생 시 어떻게 고쳐야 하는걸까요
sqlalchemy.exc.InvalidRequestError: When initializing mapper Mapper[ScheduleEntity(schedules)], expression 'CountryEntity' failed to locate a name ('CountryEntity'). If this is a class name, consider adding this relationship() to the <class 'src.models.schedule.ScheduleEntity'> class after both dependent classes have been defined. cities = relationship("src.models.city.CityEntity", back_populates="country", cascade="all, delete-orphan", lazy="joined") schedules = relationship("src.models.schedule.ScheduleEntity", back_populates="country", cascade="all, delete-orphan", lazy="joined")이미 이렇게 다 해놨는데 말이죠...
-
해결됨FastAPI 완벽 가이드
pydantic
안녕하세요. 강의에서 사용한 pydantic은 V2인게 맞는 걸까요??
-
해결됨실전! FastAPI 입문
FastAPI 폴더 구조에 대해 질문이 있습니다.
안녕하세요. FastAPI 프로젝트의 폴더 구조에 대해서 궁금한 점이 생겨서 질문 드립니다.처음에는 라우터에 모든 로직을 넣어서 라우터와 Repository만 분리해서 개발을 하다가, 3 레이어드 아키텍처로 분리를 좀 해볼까 생각이 들었습니다.controller, service, repository 이렇게 나누어 보려고 하는데요. 예를들어 user, board와 같은 도메인이 있다고 하면, 각 폴더를 도메인별로 나누어서 구조를 잡는게 좋을까요? 아니면, controller 폴더 안에 user_controller.py, board_controller.py 등의 파일들이 모여있는게 좋을까요? 선생님께서는 실무에서 어떻게 폴더 구조를 가져가시는지도 궁금합니다.감사합니다.