묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨실전! FastAPI 입문
테스트 코드 path api 에서 오류에대해 해결해주세요
def test_update_todo(client, mocker): # 200 # mocker.patch( # "main.get_todo_by_todo_id", # return_value=ToDo(id=1, contents="todo", is_done=True) # ) # undone = mocker.patch.object(ToDo, "undone") # mocker.patch( # "main.update_todo", # return_value=ToDo(id=1, contents="todo", is_done=False) # ) # # response = client.patch("/todos/1", json={"is_done": False}) # undone.assert_called_once_with() # # assert response.status_code == 200 # assert response.json() == {"id": 1, "contents": "todo", "is_done": True} # 가상 DB 생성 mocker.patch( "main.get_todo_by_todo_id", return_value=None ) # 404 # update response = client.patch("/todos/1", json={"is_done": True}) assert response.status_code == 404 assert response.json() == {"detail": "ToDo Not Found"} 여기에서 422 에러가 매칭 안된다고 나옵니다. main.py 코드는 @app.patch("/todos/{todo_id}", status_code=200) def update_todo_handler( todo_id: int, is_done: bool, session: Session = Depends(get_db) ): todo: ToDo | None = get_todo_by_todo_id(session=session, todo_id=todo_id) if todo: todo.done() if is_done else todo.undone() todo: ToDo = update_todo(session=session, todo=todo) return ToDoSchema.from_orm(todo) return HTTPException(status_code=404, detail="ToDo Not Found") 이러합니다. 똑같이 한상태이고 혹시 스키마 부분이 from_attributes = True 이걸 써서 그런겉가요?
-
미해결처음하는 파이썬 백엔드 FastAPI 부트캠프 (FastAPI부터 비동기 SQLAlchemy까지) [풀스택 Part1-2]
uvicorn main:app --reload 실행 불가
강의 준비를 위한 FastAPI 개발환경 설정 uvicorn main:app --reload이 명령어를 입력하면 아래의 에러가 나는데요. python -m uvicorn main:app --reload이 명령어로 서버 실행을 하고 있는데 상관 없을지요. PATH 변수 수정을 했지만 계속 아래의 에러가 나네요. uvicorn : 'uvicorn' 용어가 cmdlet, 함수, 스크립트 파일 또는 실행할 수 있는 프로그램 이름으로 인식되지 않습니다. 이름이 정확한지 확인하고 경로가 포함된 경우 경로가 올바른지 검증한 다음 다시 시도하십시오.위치 줄:1 문자:1+ uvicorn main:app --reload+ ~~~~~~~ + CategoryInfo : ObjectNotFound: (uvicorn:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException
-
미해결파이썬 동시성 프로그래밍 : 데이터 수집부터 웹 개발까지 (feat. FastAPI)
멀티 스레딩 질문..
안녕하세요 강사님 !동시성과 병렬성의 개념을 멀티스레딩과 연계시켜 이해하는게 어려워 질문 남깁니다.asyncio 의 경우에는, 싱글 스레드에서 이벤트루프를 이용해서 동시성을 구현했다는 점은 이해가 되었습니다. 그래서 asyncio는 동시성일 수 밖에 없다는 걸로 이해됩니다.이에 반해, 멀티 스레딩은 동시성일 수도 있고 병렬성일 수도 있다고 생각하는데 제가 맞게 이해한건지 헷갈립니다.저는 이렇게 이해했는데 한번 과정이 맞는지 검토 요청드립니다.우선 [c언어]로 구현된 하나의 프로세스만 띄워져 있고, 해당 프로세스가 여러 쓰레드를 생성하는 상황이라고 가정하겠습니다.이때 멀티 스레딩은, 컴퓨터 환경이 [싱글] 코어였다면, 여러개의 스레드가 결국엔 컨텍스트 스위칭되어 concurrency하게 처리될 수 밖에 없기에 이는 동시성이라고 말할 수 있고,멀티 코어였다면 여러 쓰레드가 병렬적으로 [각각의 코어]에서 처리가 될수 있기에 이런 경우는 병렬성이라고 말할 수 있을 것 같은데 맞을까요?즉, 멀티스레딩으로 구현된 프로그램을 두고 이를 동시성이라 부를지 병렬성으로 부를지는 컴퓨터환경이 싱글코어냐 멀티코어냐에 좌우되는지가 궁금합니다.만약 그런 논리라면 멀티프로세싱도 마찬가지일까요..멀티프로세싱은 병렬처리라고 생각하고 있긴했는데, 위와 같은 논리라면 싱글코어의 환경에선 여러 프로세스가 존재하더라도 결국엔 os에 의해 컨텍스트 스위칭 되면서 한순간에 하나의 프로세스만 실행되는거니까 동시성으로 전락해버리는게 아닌가..생각됩니다.
-
해결됨실전! FastAPI 입문
pytest 세팅 강좌 / cache 파일이 생성되지 않습니다.
pytest 명령어 입력 후 1 passed, 1 warning이 뜹니다. src파일 밑에 pytest_cache 파일 또한 생성되지 않습니다. 어떻게 하면 될까요?*검색을 해봤는데 httpx의 버전 문제인 것 같기도 하나,,자력으로 해결이 안됩니다,..
-
미해결배달앱은 어떻게 내 주변의 맛집을 찾을까?
강사님께서 entity를 사용하신 이유가 궁금합니다
안녕하세요강사님의 강의를 수강 중인 주니어 개발자입니다!요즘 디자인 패턴을 공부하면서 강사님 강의를 듣다보니까 궁금한 점이 생겼습니다저는 요즘 service, repo, controller(apis) + dto 기반의 간단한 레이어드 기반 아키텍처를 차용해서 디렉토리를 구성하고 있는데요아직 DDD를 조금 밖에 학습하지 않아, 잘은 모르지만,entity를 사용한 강사님 코드를 보면, DDD가 많이 떠오릅니다entities가 도메인 객체인 것 같은 느낌도 들고요그래서 그런지 강의를 절반 이상 2번씩 들은 지금도강사님의 디렉토리 구조가 익숙치 않습니다 강사님께서 이 강의를 만드실 때, 디렉토리 구조를 entity 기반으로 만드신 이유가 따로 있으실까요?강사님께서 디렉토리 구조를 구성할 때, 어떤 방식으로 디렉토리 구조를 구성하시는 지도 궁금합니다 ㅎㅎ
-
미해결파이썬 동시성 프로그래밍 : 데이터 수집부터 웹 개발까지 (feat. FastAPI)
교안 제공은 안되나요?
교안 제공은 안되나요?
-
해결됨파이썬 API 마스터! FastAPI
깃허브 레포지토리로 버전관리하기
안녕하세요. 덕분에 fastapi를 쉽게 배우는 중입니다. ㅎㅎ다름아니라 깃허브 레포 생성해서 올리고 싶은데요. fastapi 개발환경이 익숙치 않아서 문제를 겪고 있습니다. (예를들면 git status하니깐 pip로 설치한 라이브러리가 모두 뜬다던지.. 등등입니다. )혹시 간단하게나마로 여기에 깃허브에 올리는 순서를 적어주실수 있으신가요??예를들어)1.어디 폴더위치에 들어간다.2.여기서 무엇을 한다. 리모트 등등3.git push origin feature한다.
-
해결됨파이썬 동시성 프로그래밍 : 데이터 수집부터 웹 개발까지 (feat. FastAPI)
TypeError: field Config is defined without type annotation
'FastAPI + MongoDB ODM 셋업' 강의 중 book.py 파일을 만든 뒤 서버를 실행할 때 아래와 같은 에러 메시지가 노출됩니다. TypeError: field Config is defined without type annotation Config에 type annotation이 정의되지 않았다고 하는데, 타입을 정의하거나 클래스 이름을 바꿔보는 등의 방법을 적용해보아도 같은 에러코드가 노출되고 있어 문의드립니다. 제가 사용하고 있는 환경의 python은 3.8버전이며, odmantic 등 라이브러리는 최신 버전을 사용하고 있습니다.
-
해결됨실전! FastAPI 입문
session.scalars(select(ToDo))에러
orm.py를 다음과 같이 작성했고 from sqlalchemy import Boolean, Column, Integer, String from sqlalchemy.orm import declarative_base Base = declarative_base() # base란 클래스로 db모델링 class ToDo(Base): __tablename__ = 'todo' # table이름 id = Column(Integer, primary_key=True, index=True) content = Column(String(256), nullable=False) is_done = Column(Boolean, nullable=False) # todo 객체의 출력을 쉽게 보기위해 repr def __repr__(self): return f'<ToDo(id={self.id}, content={self.content})>, is_done={self.is_done}'connection.py도 다음과 같이 작성했으나from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker DATABASE_URL = "mysql+pymysql://root:todos@127.0.0.1:3306/todos" engine = create_engine(DATABASE_URL, echo=True) # echo는 쿼리의 처리를 확인 SessionFactory = sessionmaker(autocommit=False, autoflush=False, bind=engine)강의안에서 말씀하신대로 import까지 완료하고명령어 session.scalars(select(ToDo)) 를 실행하는 과정에서 자꾸 이렇게 뜹니다 에러가 한두개가 아니라서 감도 안잡힙니다.. 도와주세요2024-06-06 20:53:23,126 INFO sqlalchemy.engine.Engine SELECT todo.id, todo.content, todo.is_done FROM todo2024-06-06 20:53:23,126 INFO sqlalchemy.engine.Engine [cached since 368.2s ago] {}Traceback (most recent call last): File "C:\Users\yhkim\inflern_project\todos\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "C:\Users\yhkim\inflern_project\todos\Lib\site-packages\sqlalchemy\engine\default.py", line 924, in do_execute cursor.execute(statement, parameters) File "C:\Users\yhkim\inflern_project\todos\Lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) ^^^^^^^^^^^^^^^^^^ File "C:\Users\yhkim\inflern_project\todos\Lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "C:\Users\yhkim\inflern_project\todos\Lib\site-packages\pymysql\connections.py", line 563, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\yhkim\inflern_project\todos\Lib\site-packages\pymysql\connections.py", line 825, in _read_query_result result.read() File "C:\Users\yhkim\inflern_project\todos\Lib\site-packages\pymysql\connections.py", line 1199, in read first_packet = self.connection._read_packet() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\yhkim\inflern_project\todos\Lib\site-packages\pymysql\connections.py", line 775, in _read_packet packet.raise_for_error() File "C:\Users\yhkim\inflern_project\todos\Lib\site-packages\pymysql\protocol.py", line 219, in raise_for_error err.raise_mysql_exception(self._data) File "C:\Users\yhkim\inflern_project\todos\Lib\site-packages\pymysql\err.py", line 150, in raise_mysql_exception raise errorclass(errno, errval)pymysql.err.OperationalError: (1054, "Unknown column 'todo.content' in 'field list'")The above exception was the direct cause of the following exception:Traceback (most recent call last): File "C:\Program Files\JetBrains\PyCharm 2024.1.2\plugins\python\helpers\pydev\pydevconsole.py", line 364, in runcode coro = func() ^^^^^^ File "<input>", line 1, in <module> File "C:\Users\yhkim\inflern_project\todos\Lib\site-packages\sqlalchemy\orm\session.py", line 2459, in scalars return self._execute_internal( ^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\yhkim\inflern_project\todos\Lib\site-packages\sqlalchemy\orm\session.py", line 2236, in _execute_internal result: Result[Any] = compile_state_cls.orm_execute_statement( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\yhkim\inflern_project\todos\Lib\site-packages\sqlalchemy\orm\context.py", line 293, in orm_execute_statement result = conn.execute( ^^^^^^^^^^^^^ File "C:\Users\yhkim\inflern_project\todos\Lib\site-packages\sqlalchemy\engine\base.py", line 1418, in execute return meth( ^^^^^ File "C:\Users\yhkim\inflern_project\todos\Lib\site-packages\sqlalchemy\sql\elements.py", line 515, in _execute_on_connection return connection._execute_clauseelement( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\yhkim\inflern_project\todos\Lib\site-packages\sqlalchemy\engine\base.py", line 1640, in _execute_clauseelement ret = self._execute_context( ^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\yhkim\inflern_project\todos\Lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context return self._exec_single_context( ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\yhkim\inflern_project\todos\Lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context self._handle_dbapi_exception( File "C:\Users\yhkim\inflern_project\todos\Lib\site-packages\sqlalchemy\engine\base.py", line 2353, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "C:\Users\yhkim\inflern_project\todos\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "C:\Users\yhkim\inflern_project\todos\Lib\site-packages\sqlalchemy\engine\default.py", line 924, in do_execute cursor.execute(statement, parameters) File "C:\Users\yhkim\inflern_project\todos\Lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) ^^^^^^^^^^^^^^^^^^ File "C:\Users\yhkim\inflern_project\todos\Lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "C:\Users\yhkim\inflern_project\todos\Lib\site-packages\pymysql\connections.py", line 563, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\yhkim\inflern_project\todos\Lib\site-packages\pymysql\connections.py", line 825, in _read_query_result result.read() File "C:\Users\yhkim\inflern_project\todos\Lib\site-packages\pymysql\connections.py", line 1199, in read first_packet = self.connection._read_packet() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
해결됨실전! FastAPI 입문
갑자기 웹페이지 수정사항이 적용되질 않습니다.
from fastapi import FastAPI, Body from pydantic import BaseModel # 쉽게 requestbody(입력받는 함수인자) 처리 app = FastAPI() # 앱이란 객체에 api연결해서 서버를 띄우면 HTTP요청 보낼 수 있다. @app.get("/") def health_check_handler(): return {"ping": "pong"} todo_data = { 1: { "id": 1, "contests": "실전! FastAPI 섹션 0 수강", "is_done": False, }, 2: { "id": 2, "contests": "실전! FastAPI 섹션 1 수강", "is_done": False, }, 3: { "id": 3, "contests": "실전! FastAPI 섹션 2 수강", "is_done": False, } } @app.get("/todos") def get_todos_handler(order: str | None = None): ret = list(todo_data.values()) if order and order == "DESC": return ret[::-1] return ret @app.get("/todos/{todo_id}") def get_todo_handler(todo_id: int): return todo_data.get(todo_id, {}) class CreateTodoRequest(BaseModel): id: int contests: str is_done: bool @app.post("/todos") def create_todo_handler(request: CreateTodoRequest): todo_data[request.id] = request.dict() return todo_data[request.id] @app.patch("/todos/{todo_id}") def update_todo_handler( todo_id: int, is_done: bool = Body(..., embed=True), ): todo = todo_data.get(todo_id) if todo: todo["is_done"] = is_done return todo return {}해당 코드까지 진행했고, (todos) PS C:\Users\yhkim\inflern_project\todos\src> uvicorn main:app --reload로 실행했는데 어느순간부터 웹페이지가 수정사항이 적용되지 않습니다.
-
해결됨실전! FastAPI 입문
유닛테스트 관련 질문입니다
강사님 안녕하세요! api 테스트가 아닌 유닛 테스트도 한번 해보고 싶어서 시도를 해봤는데요.(예를 들면, UserRepository의 get_user_by_username를 test 코드에 UserRepository.get_user_by_username 이렇게 입력하고 테스트 시도)depends 관련해서 AttributeError: 'Depends' object has no attribute 이러한 에러가 나는데이 에러를 해결해보려고 검색도 해보고 그랬는데 잘 모르겠어서..혹시 유닛 테스트는 어떤 방식으로 할수 있을지 조언 부탁드립니다 ㅠㅠ검색해보니 repository의 depends와 연관된 것 같기도 한데 이를 어떻게 해결할지 방법을 잘 모르겠습니다. 감사합니다!
-
미해결처음하는 파이썬 백엔드 FastAPI 부트캠프 (FastAPI부터 비동기 SQLAlchemy까지) [풀스택 Part1-2]
PDF파일 다운로드는 어디서 할 수 있나요?
소스코드는 다운로드 받았습니다만, 본 영상초반에 설명하시는 다른 자료는 어디서 확인가능한지 문의 드립니다.
-
미해결처음하는 파이썬 백엔드 FastAPI 부트캠프 (FastAPI부터 비동기 SQLAlchemy까지) [풀스택 Part1-2]
html 오류
공유하신 파일로 업데이트 했으나 역시나 문제 해결이 안됩니다. 그리고 html 파일을 열었는데 저렇게 나오는데... 여기서 무슨 문제가 있는게 아닐까요? "Property assignment expected javascript." 자바스크립트도 문제인거 같은데... 답변 부탁드립니다. 참고로 다른건 저는 그냥 html 인데, 잔재미님은 django html 로 되어있습니다....
-
미해결파이썬 동시성 프로그래밍 : 데이터 수집부터 웹 개발까지 (feat. FastAPI)
RuntimeWarning: Enable tracemalloc to get the object allocation traceback
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. # app 폴더 아래 main.py @app.post("/collect", response_class=HTMLResponse) async def collect(request: Request): brandlist = BrandList() brands = await brandlist.run() oy_models = [] for brand in brands: oy_model = BrandListModel( code=brand["code"], brand=brand["brand"], collection_time=brand["time"], status=brand["status"], ) oy_models.append(oy_model) await mongodb.engine.save_all(oy_models) return templates.TemplateResponse( "./index.html", {"request": request, "title": "수집기", "brands": brands}, ) # app 폴더 아래 spcrper.py class BrandList: URL = "https://www.#######.co.kr" def unit_url(self): url = f"{self.URL}/store/main/getBrandList.do" return url async def fetch(self): async with aiohttp.ClientSession() as session: async with session.get(self.unit_url()) as response: soup = BeautifulSoup(await response.text(), "html.parser") area_info = soup.select("a[data-ref-onlbrndcd]") branddics = [] for info in area_info: code = info["data-ref-onlbrndcd"] name = info.text collectiontime = date.today() item = [i["code"] for i in branddics] if code in item: pass else: branddic = { "code": f"{code}", "brand": f"{name}", "time": f"{collectiontime}", "status": "Old", } branddics.append(branddic) await session.close() return branddics def run(self): return asyncio.run(self.fetch()) 안녕하세요. 강사님. scraper.py 는 terminal에서 값을 잘 가져오고 있습니다. server.py에서 구동 시, 아래와 같은 error가 나오는데 원인을 찾지 못해서요 ㅠ RuntimeError: asyncio.run() cannot be called from a running event loopC:\Users\user\Desktop\Project_Scraper\venv\Lib\site-packages\uvicorn\protocols\http\httptools_impl.py👎 RuntimeWarning: coroutine 'BrandList.fetch' was never awaitedRuntimeWarning: Enable tracemalloc to get the object allocation traceback 코드 리뷰 좀 부탁드리겠습니다.
-
미해결처음하는 파이썬 백엔드 FastAPI 부트캠프 (FastAPI부터 비동기 SQLAlchemy까지) [풀스택 Part1-2]
pip install 해야할 목록을 알고 싶습니다.
강의를 다 듣고 코드를 실행하는데 실행이 되지 않아 pip install 해야할 목록을 알고 싶습니다.
-
미해결처음하는 파이썬 백엔드 FastAPI 부트캠프 (FastAPI부터 비동기 SQLAlchemy까지) [풀스택 Part1-2]
memos.html err
안녕하세요 html 에러가 발생했는데, 모듈이 안깔려서 그런가요? 왜 이런 현상이 일어 날까요?
-
해결됨실전! FastAPI 입문
No module named 'sqlalchemy'
sqlalchemy module이 설치되어있음에도 불구하고 위와 같이 서버를 실행시키면 no module named 'sqlalchemy' 라는 오류가 뜨는데 어떻게 해야하나요..+추가로 위의 문제를 해결하기 위해서 시도했던 방법으로,아래와 같이 flask_sqlalchemy를 통해서 sqlalchemy를 불러왔지만from flask_sqlalchemy import SQLAlchemy마찬가지로 flask_sqlalchemy에 대해서도 찾을 수 없다는 오류가 뜹니다..
-
미해결처음하는 파이썬 백엔드 FastAPI 부트캠프 (FastAPI부터 비동기 SQLAlchemy까지) [풀스택 Part1-2]
passlib 비활성화 해결방법
안녕하세요 passlib dp 노랑 불이 들어왔는데, 어떻게 해결하나요? 구글링 해도 안나오네요 ㅠㅠ
-
미해결파이썬 동시성 프로그래밍 : 데이터 수집부터 웹 개발까지 (feat. FastAPI)
jinja2templates
수업대로 127.0.0.1:8000/items/{id} 를 넣었는데starlette.routing.NoMatchFound: No route exists for name "static" and params "path".internal Server Error 가 나옵니다 ㅠBASE_DIR, directory 모두 수업대로 다 입력했습니다. 구글링을 해도 방법을 찾질 못해서요.
-
미해결처음하는 파이썬 백엔드 FastAPI 부트캠프 (FastAPI부터 비동기 SQLAlchemy까지) [풀스택 Part1-2]
mysql install 문제
안녕하세요 잔재미님!! 늦은 시간에 죄송합니다. 몇 일간 MYSQL 때문에 삽질을 너무 하고 있네요 ㅠㅠ 일단 MYSQL 인텔_맥 버전 다운로드 받아서 설치했는데, 실행이 안되네요... 수십번 지우고 깔고 하다 또 요런 " ERROR! The server quit without updating PID file" 오류가 발생했습니다. 구글링으로 찾아서 해볼건 다해봐는데 안되네요~ 심지어 마리아DB도 해봤는데 마찬가지 오류가 발생하여 삭제를 했습니다... anaconda3 로 경로가 되어있는데 이게 문제인가요? 도저히 모르겠네요. 조언좀 부탁드립니다