VScode로 개발을 시작했다
- Python 설치
- Oracle Cloud Free tier 신청 및 데이터베이스 구축(최대한 간단하게 아무거나 무료로)
- FastApi와 각종 패키지 설치
- flutter 설치
- Android studio 설치
- 각종 개발에 필요한 sdk 설치
프로젝트 구조
[Project name]
- backend : fastApi
- frontend : flutter
- 2.fastApi 서버 실행 테스트 및 오라클 클라우드 디비 연결
fastApi는 설치 에러나 권한 에러 말고는 단순히 실행했을 때 hello world json구조는 잘 되었다.
* 오라클 클라우드 디비 연결하기
[backend] 구조는
[main.py]
# Fastapi 적용
from fastapi import FastAPI
# Router 등록
from app.api.router import router as api_router
# CORS : 크로스 오리진 리소스 공유(CORS) 설정을 추가하여 프론트엔드 애플리케이션이 API에 접근할 수 있도록 허용합니다
from fastapi.middleware.cors import CORSMiddleware
app = FastAPI()
# 라우터 등록
app.include_router(api_router)
[router.py]
# /app/api/router.py
from fastapi import APIRouter, Depends
from app.db.database import get_db
router = APIRouter()
@router.get("/users")
def read_users(db=Depends(get_db)):
cursor = db.cursor()
cursor.execute("SELECT * FROM users")
data = cursor.fetchall()
cursor.close()
db.close()
return {"users": data}
-> 이 과정에서 나는 우선 오라클 클라우들 데이터 베이스에 접속해서 users 테이블 생성 및 더미 데이터를 3개 정도 넣어주었다.
[database.py]
import cx_Oracle
from fastapi import HTTPException
# Oracle Client의 경로 설정
cx_Oracle.init_oracle_client(lib_dir=r"C:\Users\babuk\Desktop\Oracle\instantclient_21_13")
def get_db():
connection = None
try:
# Oracle Wallet을 사용하는 경우 지갑 위치는 sqlnet.ora를 통해 설정됩니다.
# 사용자가 지정한 dsn을 그대로 사용합니다.
connection = cx_Oracle.connect(user="admin", password="비밀번호", dsn="무엇무엇_high", encoding="UTF-8")
yield connection
except cx_Oracle.DatabaseError as e:
# 데이터베이스 연결 실패 시 오류를 기록하고 클라이언트에게 알립니다.
print(f"Database connection failed: {e}") # 오류 로깅
raise HTTPException(status_code=500, detail="Database connection failed")
finally:
# 연결이 성공적으로 생성되었을 경우에만 연결을 닫습니다.
if connection is not None:
try:
connection.close()
except cx_Oracle.Error as e:
print(f"Error closing connection: {e}") # 연결 닫기 실패 시 로깅
당연히 터미널을 통해서 cx_Oracle 를 설치해주고
init_oracle_client 이 부분
https://www.oracle.com/database/technologies/instant-client/winx64-64-downloads.html
Instant Client for Microsoft Windows (x64) 64-bit
Base - one of these packages is required Tools - optional packages Development and Runtime - optional packages
www.oracle.com
로 접속해서 개발 pc os에 맞는 것을 설치해준다 나는 그냥 최신 버전인 21을 설치했다.
그리고 확신은 안가지만
압축을 풀고 난 다음 오라클 클라우드 월렛의 파일을 여기에 전부 복사해서 넣어준다
초기에는 readme만 존재한다.
그리고 instantclient_21_13을
시스템환경변수에 ORACLE_HOME으로 추가해줬다.
경로는 당연히 압출을 푼 경로까지 넣어준다
ex) C://뭐시기 뭐시기 ~ /instantclient_21_13
그리고 파이썬 서버를 실행하니 localhost:port/users 를 브라우저에서 실행하니 안정적으로 데이터가 조회되는 걸 볼 수 있었다.