묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨FastAPI: Python으로 3배 빠르게, 2배 정확한, 10배 빠른 API 만들기
34강 강의 마지막에 나오는 35강 websocket 관련 강의 관련 질문
34강 마지막에 35강 강의는 websocket과 관련된 강의라고 하는데 해당 내용에 대한 강의도 있는 건가요? 아니면 35강 부터 Docket 컨테이너화와 AWS 배포 실습에 관한 강의 인가요?
-
해결됨실전! FastAPI 입문
DB 질문
내용 관련된 질문은 아니지만 궁금해서 여쭤봅니다. 혹시 MSSQL을 사용해도 이후의 내용을 동일하게 진행할 수 있을까요?
-
해결됨FastAPI: Python으로 3배 빠르게, 2배 정확한, 10배 빠른 API 만들기
Docker와 AWS 배포 강의 관련
강의 소개에 안내된 "Docker를 이용해 애플리케이션을 컨테이너화하고, AWS 클라우드 환경에 직접 배포하고 운영"에 관한 강의는 언제 올라오나요? 어디엔가 답변에 지난 주말에 올라 올 거라는 내용이 있었던 것 같은데.... 아직 업로드가 되지 않아서 문의 남깁니다.
-
미해결FastAPI 완벽 가이드
import 자동완성
아래와 사진과 같이 import가 되어 있지 않은 경우 에러가 발생하게 됩니다.다른 언어들은 특정 버튼을 눌러서 import가 자동완성 되는 경우가 많은데 fastapi는 안되는 걸까요?
-
해결됨FastAPI: Python으로 3배 빠르게, 2배 정확한, 10배 빠른 API 만들기
15강 수정 요청: DOWNLOAD_DIR 확인 구문 부분
아래의 엔드포인트 두개의 함수 부분에서async def download_basic(file_name: str):async def download_custom(file_name: str):if not file_path.startswith(os.path.abspath(DOWNLOAD_DIR)): 이 부부의 file_path를 full_file_path를 아래처럼 할당한 후에if not full_file_path.startswith(os.path.abspath(DOWNLOAD_DIR)): 으로 수정해야 할 듯 합니다.@app.get("/download/basic/{file_name}") async def download_basic(file_name: str): safe_base_filename = os.path.basename(file_name) file_path = os.path.join(DOWNLOAD_DIR, safe_base_filename) full_file_path = os.path.abspath(file_path) . ' ' if not full_file_path.startswith(os.path.abspath(DOWNLOAD_DIR)): # if not file_path.startswith(os.path.abspath(DOWNLOAD_DIR)): @app.get("/download/custom/{file_name}") async def download_custom(file_name: str): safe_base_filename = os.path.basename(file_name) file_path = os.path.join(DOWNLOAD_DIR, safe_base_filename) full_file_path = os.path.abspath(file_path) . ' ' if not full_file_path.startswith(os.path.abspath(DOWNLOAD_DIR)): # if not file_path.startswith(os.path.abspath(DOWNLOAD_DIR)):그렇지 않으면 검증이 되지 않습니다. 아래 참고file_path: ./downloadables/스크린샷_3.pngfull_file_path: D:\Python_FastAPI\Inflearn_Master\File_API\downloadables\스크린샷_3.pngos.path.abspath(DOWNLOAD_DIR): D:\Python_FastAPI\Inflearn_Master\File_API\downloadables
-
해결됨React & FastAPI로 만드는 투표 커뮤니티 플랫폼: 결제 시스템으로 수익화까지!
Github repository는 없나요?
Notion에 있는 코드말고, Github Repository는 따로 없나요?
-
해결됨React & FastAPI로 만드는 투표 커뮤니티 플랫폼: 결제 시스템으로 수익화까지!
백엔드 도커 실행 에러가 뜹니다 ㅠ
에러 로그는 아래와 같아요File "<frozen importlib._bootstrap_external>", line 999, in exec_module File "<frozen importlib._bootstrap>", line 488, in callwith_frames_removed File "/app/main.py", line 6, in <module> from app.db.database import Base, async_engine File "/app/app/db/database.py", line 1, in <module> from sqlalchemy.ext.asyncio import AsyncSession, create_async_engine ModuleNotFoundError: No module named 'sqlalchemy' WARNING: WatchFiles detected changes in 'app/db/crud/user.py'. Reloading... Process SpawnProcess-2: Traceback (most recent call last): File "/usr/local/lib/python3.12/multiprocessing/process.py", line 314, in _bootstrap self.run() File "/usr/local/lib/python3.12/multiprocessing/process.py", line 108, in run self._target(*self._args, **self._kwargs) File "/usr/local/lib/python3.12/site-packages/uvicorn/_subprocess.py", line 80, in subprocess_started target(sockets=sockets) File "/usr/local/lib/python3.12/site-packages/uvicorn/server.py", line 67, in run return asyncio.run(self.serve(sockets=sockets)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/asyncio/runners.py", line 195, in run return runner.run(main) ^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/asyncio/runners.py", line 118, in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "uvloop/loop.pyx", line 1518, in uvloop.loop.Loop.run_until_complete File "/usr/local/lib/python3.12/site-packages/uvicorn/server.py", line 71, in serve await self._serve(sockets) File "/usr/local/lib/python3.12/site-packages/uvicorn/server.py", line 78, in _serve config.load() File "/usr/local/lib/python3.12/site-packages/uvicorn/config.py", line 436, in load self.loaded_app = import_from_string(self.app) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/uvicorn/importer.py", line 22, in import_from_string raise exc from None File "/usr/local/lib/python3.12/site-packages/uvicorn/importer.py", line 19, in import_from_string module = importlib.import_module(module_str) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/importlib/__init__.py", line 90, in import_module return bootstrap.gcd_import(name[level:], package, level) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "<frozen importlib._bootstrap>", line 1387, in gcdimport File "<frozen importlib._bootstrap>", line 1360, in findand_load File "<frozen importlib._bootstrap>", line 1331, in findand_load_unlocked File "<frozen importlib._bootstrap>", line 935, in loadunlocked File "<frozen importlib._bootstrap_external>", line 999, in exec_module File "<frozen importlib._bootstrap>", line 488, in callwith_frames_removed File "/app/main.py", line 6, in <module> from app.db.database import Base, async_engine File "/app/app/db/database.py", line 1, in <module> from sqlalchemy.ext.asyncio import AsyncSession, create_async_engine ModuleNotFoundError: No module named 'sqlalchemy' 위 에러 때문인지 코드에서 아래 에러? 도 뜨네요 uvicorn main:app --reload도 당연 에러 뜨구요..어떤 부분을 확인하면 될까요? ㅠ
-
해결됨FastAPI: Python으로 3배 빠르게, 2배 정확한, 10배 빠른 API 만들기
31강 질문: /docs에 read_all_users 관련
31강에서 구현된 users.py의 read_all_users는 화면에 구현이 안되는 것이 맞는 것인가요? Users의 POST /users 밑에 GET /users/all로 있어야 할 것 같은데...===> PC를 재시작 후 다시 서버를 실행해 보니 나타납니다.DB Browser에서 특정 User의 is_admin을 true로 수정하고 저장까지 완료하고 난 후, 각각의 User들로 로그인해보았습니다. 그런데, is_admin이 false인 모든 User들도 read_all_users의 endpoint인 /users/all에서 모든 회원들의 리스트가 조회가 됩니다./docs 페이지라서 그런 것인지 아니면 잘못 구현된 것인지 궁금합니다. 강의에서는 docs에서의 이런 상황에 대한 언급이 없어 질문을 드립니다.
-
해결됨FastAPI: Python으로 3배 빠르게, 2배 정확한, 10배 빠른 API 만들기
30강 질문: 토큰생성 관련
30강을 완강후에Postman을 통해 post로 http://127.0.0.1:8000/token으로 요청을 보냈는데 아래 처럼 응답으로 토큰이 날아오지 않습니다. 422 Unprocessable Content 에러가 나오구요~~oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token") # http://<your_domain>/token 뭐가 문제일런지요? postman사용법에 맞게 된것 같지가 않은데요..... @@@ 추가 질문그리고, 더불어서 발급받은 토큰을 /docs에서 Authentication의 어디에 입력을 해서 테스트를 해야 하는지도 같이 안내바랍니다.여기 client secret에 입력해서 테스트 하는것 같은데.... username, password를 입력해서 로그인하면 token은 잘 생성됩니다.그리고 이렇게 username과 password로 로그인할 때 생성된 토큰으로 client secret에 입력해서 로그인하면 auth errorError: Unprocessable Content 라는 메시지가 뜹니다. postman사용법이 미숙해서인지 postman에서 post /token으로 날려도 토큰이 반환되어 오질 않습니다. 당연히 docs에서 username, password로 로그인한 후에... 수정, 삭제 권한적용은 잘 적용됩니다.
-
해결됨FastAPI: Python으로 3배 빠르게, 2배 정확한, 10배 빠른 API 만들기
26강 에러발생: 해결방법 알려주세요.
26강에서 User model를 만들고, Task model의 관계 설정까지 하고 env.py에서 User를 임포트하고 난후 alembic revision --autogenerate를 실행하고, alembic upgrade head 를 실행하면 User 테이블과 Task 모델의 관계설정은 잘 만들어 졌지만, 아래에 보이는 것처럼, 제약조건에 name을 지정하라고 나옴니다. 그래서 name을 지정하고 db를 삭제하고, alembic을 초기화된 상태로 만든 후에 다시 똑같은 과정을 거쳐 실행햇는데, 두번째 alembic revision --autogenerate 을 실행하면, sqlalchemy.exc.NoReferencedColumnError: Could not initialize target column for ForeignKey 'users.id' on table 'tasks': table 'users' has no column named 'id' 이런 오류가 나타납니다. 자꾸 자꾸 계속해서 다시 해봐도 제약조건에 이름을 넣으라고 나오고, 그것을 수정하면 users에 id가 없다는 둥 계속 똑같이 오류가 나옵니다. 해결 방법은 무엇일까요? 완전히 새로 해봐도 똑같은 오류만 계속 반복됩니다.
-
해결됨FastAPI: Python으로 3배 빠르게, 2배 정확한, 10배 빠른 API 만들기
25강에서 에러발생: 해결방법 알려주세요
💡 질문하기 전에 먼저 확인해보세요!UnicodeDecodeError: 'cp949' codec can't decode byte 0xed in position 3465: illegal multibyte sequence 유니코드 관련에러가 발생합니다. utf-8 관련 설정에 문제가 있어보이는데, 해결방법을 구합니다. 별것을 다해본것 같은데 해결이 되질 않습니다. 코드는 알려주신데로 아래와 같이 수정했습니다.# /alembic.ini 파일 sqlalchemy.url = sqlite+aiosqlite:///./sql_app.db # /alembic/env.py 파일 import asyncio # 추가 from logging.config import fileConfig import os # 경로 작업 위해 추가 import sys # 경로 작업 위해 추가 from sqlalchemy import engine_from_config from sqlalchemy import pool # ✨ 추가: 비동기 엔진 설정을 위해 async_engine_from_config 사용 ✨ from sqlalchemy.ext.asyncio import async_engine_from_config from alembic import context # --- ✨ 추가: 프로젝트 루트 경로 추가 (env.py가 app 모듈을 찾도록) ✨ --- # env.py 파일의 부모 디렉토리의 부모 디렉토리 (즉, 프로젝트 루트)를 sys.path에 추가 sys.path.insert(0, os.path.realpath(os.path.join(os.path.dirname(__file__), ".."))) # -------------------------------------------------------------- # --- ✨ 추가: Base 및 모델 임포트 ✨ --- from app.database import Base # database.py의 Base 임포트 import app.sql_models.task # task 모델 모듈 임포트 (Base.metadata가 인식하도록) # 만약 다른 모델 파일들이 있다면 모두 임포트해주는 것이 안전합니다. # ----------------------------------------------------------------------------- # this is the Alembic Config object, which provides # access to the values within the .ini file in use. config = context.config # Interpret the config file for Python logging. # This line sets up loggers basically. if config.config_file_name is not None: fileConfig(config.config_file_name) # add your model's MetaData object here # for 'autogenerate' support # from myapp import mymodel # target_metadata = mymodel.Base.metadata # target_metadata = None # --- ✨변경: target_metadata 설정 ✨ --- target_metadata = Base.metadata # 우리의 모델 메타데이터 지정! # -------------------------------- # other values from the config, defined by the needs of env.py, # can be acquired: # my_important_option = config.get_main_option("my_important_option") # ... etc. # ✨ 추가 ✨----------------------------------------------------------------- def do_run_migrations(connection): # context 설정 및 마이그레이션 실행 (run_sync 내부에서 호출될 함수) context.configure(connection=connection, target_metadata=target_metadata) with context.begin_transaction(): context.run_migrations() # --------------------------------------------------------------------------- # ... (run_migrations_offline 함수는 보통 그대로 둠) ... def run_migrations_offline() -> None: """Run migrations in 'offline' mode. This configures the context with just a URL and not an Engine, though an Engine is acceptable here as well. By skipping the Engine creation we don't even need a DBAPI to be available. Calls to context.execute() here emit the given string to the script output. """ url = config.get_main_option("sqlalchemy.url") context.configure( url=url, target_metadata=target_metadata, literal_binds=True, dialect_opts={"paramstyle": "named"}, ) with context.begin_transaction(): context.run_migrations() # --- ✨ 변경: run_migrations_online 함수 비동기 방식으로 수정 ✨ --- async def run_migrations_online() -> None: """Run migrations in 'online' mode for an async application.""" # config 섹션에서 비동기 엔진 생성 connectable = async_engine_from_config( config.get_section(config.config_ini_section), prefix="sqlalchemy.", poolclass=pool.NullPool, future=True, # SQLAlchemy 2.0 스타일 사용 ) # 비동기적으로 DB 연결 async with connectable.connect() as connection: # 동기적인 마이그레이션 함수(do_run_migrations)를 # 비동기 연결의 run_sync 메서드 내에서 실행 await connection.run_sync(do_run_migrations) # 엔진 연결 종료 await connectable.dispose() # ----------------------------------------------------------------- ''' # ✨ 위의 것으로 수정 def run_migrations_online() -> None: """Run migrations in 'online' mode. In this scenario we need to create an Engine and associate a connection with the context. """ connectable = engine_from_config( config.get_section(config.config_ini_section, {}), prefix="sqlalchemy.", poolclass=pool.NullPool, ) with connectable.connect() as connection: context.configure( connection=connection, target_metadata=target_metadata ) with context.begin_transaction(): context.run_migrations() ''' if context.is_offline_mode(): run_migrations_offline() else: # ✨ run_migrations_online() # 아래로 변경 # 온라인 모드일 경우 비동기 함수 실행 asyncio.run(run_migrations_online())
-
미해결FastAPI: Python으로 3배 빠르게, 2배 정확한, 10배 빠른 API 만들기
13강 DeleteUserCookie 함수
13강 15분 즈음에 나오는 DeleteUserCookie함수는 도대체 어디에 있는건가요? 강의 듣는도중 노션에 없는 예시가 음성으로만 나오는데 관련된 코드가 따로 있는건가요? 한 두 강의에서만 그런게 아니라 이전 강의에서도 노션에 없는 코드를 음성으로만 설명하는 경우가 있던데 원래 그런건가요...?
-
해결됨React & FastAPI로 만드는 투표 커뮤니티 플랫폼: 결제 시스템으로 수익화까지!
6-2 강의 노션 코드 오타인거죠?
SingleTopic/index.jsx -> voteOptions 으로 전달하는데요<Chart topicId={topic.topic_id} voteOptions={topic.vote_options} />Chart/index.jsx->voteOpitons 으로 받더라구요 제가 웹은 거의 몰라서 변수 선언, 호출 등 이런게 와닿지가 않고 시간적 여유가 없는 상황에 노션 코드를 많이 가져다 써서 공부하고 있는데요..ㅠ앞으로 강의에서도 노션 코드에 오타 좀 더 신경 써주시면 좋을 것 같아요c++ 같은 언어에 익숙한 저로서는 이런 에러 발생 시, 찾아가는 것도 도움이 많이 되긴합니다 ㅎㅎ
-
미해결베개 투자법: 자면서 돈 버는 AI 주식 자동 매매 머신
경제지표 업데이트 오류
강의 처럼 app을 실행하고 경제지표 업데이트 하기위해 api excute하게 되면 바로 종료가 되어 버립니다. 혹시 해결방법이 있을까요?
-
미해결처음하는 파이썬 백엔드 FastAPI 입문 (FastAPI부터 비동기 SQLAlchemy까지) [풀스택 Part1-2]
uvicorn 명령어 수행 오류
https://inf.run/wLydT해당 질문과 동일한 오류가 생겨서 답변을 참고해 PATH 등록을 했습니다만 여전히 동일한 오류코드가 뜨며 인식 불가능한 명령어라고 뜹니다. 다른 문제가 있을까요? 위 답변에서 알려준 확인 명령어들을 사용했을 때에는 설치되었다고 뜹니다. 참고로 현재 영상을 수강하는 시점에서는 아나콘다의 최신버전 설치에 따라 python 또한 3.13.5 버전으로 설치되었습니다.
-
해결됨FastAPI: Python으로 3배 빠르게, 2배 정확한, 10배 빠른 API 만들기
안녕하세요 강의자료 문의입니다.
안녕하세요 강의에서 보여주시는 강의 자료(노션)는 없는걸까요?
-
해결됨FastAPI: Python으로 3배 빠르게, 2배 정확한, 10배 빠른 API 만들기
FASTAPI 소개와 핵심 특징 강의 내용에서 화면이 멈춰있습니다.
💡 질문하기 전에 먼저 확인해보세요! 답변을 기다리는 동안, 아래 항목들을 먼저 확인해보시면 문제가 해결될 수도 있어요.강의 내용 다시 보기: 혹시 놓친 부분이 없는지 해당 챕터의 강의를 한 번 더 돌려보셨나요?오타 및 들여쓰기 확인: 파이썬은 특히 들여쓰기에 민감해요. 코드에 오타나 잘못된 들여쓰기는 없는지 꼼꼼히 확인해주세요.에러 메시지 검색: 빨간색 에러 메시지가 떴다면, 메시지 전체를 복사해서 구글에 그대로 붙여넣기 해보세요. 전 세계 개발자들이 비슷한 문제를 겪고 해결책을 공유해두었을 확률이 높습니다.Q&A 게시판 검색: 혹시 다른 분이 먼저 비슷한 질문을 올렸는지 게시판을 한번 살펴보는 것도 좋은 방법이에요. 해당 강의 화면에서 코드를 보고 설명하시는 것 같은데 화면이 계속 인프런 강의소개 페이지인데 제가 맞게 보고 있는걸까요?
-
미해결베개 투자법: 자면서 돈 버는 AI 주식 자동 매매 머신
모의투자에서는 받은 API키로 잘되는데 실제 API키로 변경해서 사용하면 기간이 만료된 token 입니다 라고 표시됨
KIS_USE_MOCK=true -> 모의 KIS_USE_MOCK=false -> 실제 위처럼 설정변경도 해보면서 진행했는데 운영으로 테스트시 { "rt_cd": "1", "msg1": "기간이 만료된 token 입니다.", "msg_cd": "EGW00123" } 이렇게 출력되고 해외주식 잔고조회가 안됩니다.보니깐 이게 모의로 연결했다 모의의 token이 남아서 그런것 같아서 소스 조금 수정해서 일단 다시 받으라고 했더니 운영토큰 발급됐다고 카톡이 오는데 아래처럼 이번엔 해당 서비스를 찾을수 없다고 하네요Response bodyDownload{ "rt_cd": "1", "msg_cd": "MCA00124", "msg1": "해당 서비스를 찾을수 없습니다." }Response headers content-length: 86 content-type: application/json date: Wed,30 Jul 2025 12:23:13 GMT server: uvicorn 테스트는 http://localhost:8000/balance/overseas 로 해외주식 잔고조회 호출 한겁니다.
-
해결됨실전! 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 형식으로 들어오더라구요. 궁금해서 문의드립니다.
-
해결됨React & FastAPI로 만드는 투표 커뮤니티 플랫폼: 결제 시스템으로 수익화까지!
섹션2 퀴즈 정답 이상함..( Docker 핵심구성요소가 아닌 것)
섹션2 퀴즈에 Docker 핵심 구성요소가 아닌 것에서 답이 잘못 되어 있는 것 같네요. 해설은 Volume 이라고 하면서 막상 답은 Docker Container 를 선택해야 정답이라고 하는군요..