묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결Pytest와 Nox를 활용한 파이썬 테스트 자동화 완벽 가이드
nox 실행 에러 메세지
챕터 17 nox 테스트 중입니다. 테스트 환경은 윈도우11, 파이썬 3.11버전이고 공유주신 noxfile.py 의 tests 세션을 실행하던 중에 다음 에러가 발생하였습니다. session.install("-e", ".") 실행중에 에러가 난것으로 보이는데 setup.py 나 pyproject.toml 이 없다고 나오는데 공유주신 자료에는 안보여서요.현재 프로젝트 파일 구조는 my_pytest / mycalc/my_pytest / tests /my_pytest / noxfile.pymy_pytest / requirements-dev.txt 로 되어 있습니다.
-
미해결실전! FastAPI 입문
DB 질문
내용 관련된 질문은 아니지만 궁금해서 여쭤봅니다. 혹시 MSSQL을 사용해도 이후의 내용을 동일하게 진행할 수 있을까요?
-
미해결실전! FastAPI 입문
Post API 강의 질문
POST API 첫번째 강의에서 main.py의 52번 줄에 request를 dict() 형식으로 꼭 맞춰 주어야하나요?? 출력은request >> id=4 contents='aaa' is_done=Truerequest.dict() >> {'id': 4, 'contents': 'aaaa', 'is_done': True}이렇게 되는데, 그냥 request 만 써도 swagger UI에서 보았을 땐 똑같이 dict 형식으로 들어오더라구요. 궁금해서 문의드립니다.
-
해결됨실전! FastAPI 입문
post 작성 오류
강의 내용 그대로 따라왔는데swagger에서 확인하니 post 요청에서 json으로 작성할수가 없고, no parameter라고 떠요. 왜 이런 건가요?
-
해결됨실전! FastAPI 입문
uvicorn 종료 문제
수업 진행 중 코드는 문제가 없지만 컨트롤+c를 눌러도 아무 반응이 없고 uvicorn 종료가 안됩니다 ㅠㅠ해결방법이 있을까요?ㅠㅠ
-
해결됨실전! FastAPI 입문
왜 return타입이 ToDo라는 스트링인가요?
안녕하세요.항상 좋은 강의 감사드립니다.수업을 듣던중 2:31경에 나오는 리턴타입을 왜 스트링으로 설정하는지 궁금해서 질문드립니다.이상입니다. 감사합니다.
-
해결됨실전! 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 입문
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 입문
섹션 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 입문
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 입문
FastAPI 폴더 구조에 대해 질문이 있습니다.
안녕하세요. FastAPI 프로젝트의 폴더 구조에 대해서 궁금한 점이 생겨서 질문 드립니다.처음에는 라우터에 모든 로직을 넣어서 라우터와 Repository만 분리해서 개발을 하다가, 3 레이어드 아키텍처로 분리를 좀 해볼까 생각이 들었습니다.controller, service, repository 이렇게 나누어 보려고 하는데요. 예를들어 user, board와 같은 도메인이 있다고 하면, 각 폴더를 도메인별로 나누어서 구조를 잡는게 좋을까요? 아니면, controller 폴더 안에 user_controller.py, board_controller.py 등의 파일들이 모여있는게 좋을까요? 선생님께서는 실무에서 어떻게 폴더 구조를 가져가시는지도 궁금합니다.감사합니다.
-
해결됨실전! FastAPI 입문
질문 있습니다.
안녕하세요. FastAPI로 개발한 어플리케이션을 Rocky 서버에 올려서 실행시키려고 합니다.그런데, Sqlalchemy를 통해 DB와 연결하는 부분에서 UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb8 in position 61: invalid start byte위와 같은 에러가 계속 발생하는데요. env에서 받아오는게 잘못됐나 싶어서 직접 스트링으로 넣어봐도 똑같은 에러가 계속 발생하고 있습니다.서버의 locale도 찍어보면LANG=ko_KR.UTF-8 LC_CTYPE="ko_KR.UTF-8" LC_NUMERIC="ko_KR.UTF-8" LC_TIME="ko_KR.UTF-8" LC_COLLATE="ko_KR.UTF-8" LC_MONETARY="ko_KR.UTF-8" LC_MESSAGES="ko_KR.UTF-8" LC_PAPER="ko_KR.UTF-8" LC_NAME="ko_KR.UTF-8" LC_ADDRESS="ko_KR.UTF-8" LC_TELEPHONE="ko_KR.UTF-8" LC_MEASUREMENT="ko_KR.UTF-8" LC_IDENTIFICATION="ko_KR.UTF-8" LC_ALL=잘 설정되어있는데, 뭐가 문제일까요? 아래는 DB 연결하는 부분 코드입니다.from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker from core.settings.settings import settings DATABASE_URL = f"postgresql://{settings.DB_USER}:{settings.DB_PASSWORD}@{settings.DB_HOST}:{settings.DB_PORT}/{settings.DB_NAME}" print(f"DB: {DATABASE_URL}") engine = create_engine( DATABASE_URL, echo=True, connect_args={"options": "-c search_path=schema"} ) SessionFactory = sessionmaker(autoflush=False, autocommit=False, bind=engine) def get_db(): session = SessionFactory() try: yield session finally: session.close()
-
해결됨실전! FastAPI 입문
mysql root 비밀번호 변경관련
docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=todos -e MYSQL_DATABASE=todos -d -v todos:/db --name todos mysql:8.0ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '비밀번호'; 명령어로 root계정의 비밀번호를 바꿨고, 이후에 mysql -u root -p로 root계정에 접속할 때는 변경된 비밀번호로 잘 작동합니다. 그러나,workbench에서 localhost:3306 root계정에 접속하려할 때, 계속해서 강의중 설정한 todos라는 비밀번호를 입력해야 접근이 가능한 상황입니다.왜 cmd에서 변경한 비밀번호가 워크벤치에 적용되지 않는것인지 궁금해서 문의드립니다. 해결방법이 있을까요?
-
미해결실전! FastAPI 입문
[질문] patch API
patch부분 웹사이트에 적용이 안되는데 왜 그런지 알수있을까요?
-
해결됨실전! FastAPI 입문
디자인 패턴
덕분에 Fastapi 관련 수강 완료하였습니다. 이제는 디자인 패턴에 대해 설계를 공부해보려는데, Spring의 경우 MVC 패턴을 주로 사용하는데, Fastapi에서는 주로 어떤 디자인패턴으로 설계를 하시는 지 궁금하여 질문드렸습니다. 감사합니다
-
해결됨실전! FastAPI 입문
main.py 리로드문제
WARNING: StatReload detected changes in 'main.py'. Reloading...에러표시와 함께 웹 리로드가 안되는거같아요 delete api 작성한것 또한 스웨거 에서 확인되지않는데 혹시 해당관련 정보 받을수있을까요
-
해결됨실전! FastAPI 입문
인터프리터 오류
가상환경을 만들고 pycharm 인터프리터에 들어가면 invalud python3.10이라고 뜨는데 어떻게 해결해야할까요?
-
해결됨실전! FastAPI 입문
로그 저장에 대한 질문입니다.
안녕하세요. FastAPI로 개발을 하는 중, 로그 저장에 대해서 생각하는 시간을 좀 가져봤습니다.저는 요청, 응답, 쿼리 이렇게 3가지로 나누어서 일자별로 각각의 파일에 저장을 하려고 하는데요. 혹시 FastAPI에서 자체적으로 지원하는 기능중에 이렇게 로그를 나누어 저장하는 기능이 있을까요? 감사합니다.