1. 파이썬 - SQL DB 연동
- 금번 최종 프로젝트에서 아마존 RDS에 데이터 베이스 구축
- sqlalchmey을 활용해 파이썬으로 SQL에 업로드 된 데이터베이스를 연동
└ colab에서는 pymysql 라이브러리도 가능했지만, 로컬에서 vscode 사용 시 오류 발생하여 sqlalchmeyFH 진행
# 라이브러리 불러오기
from sqlalchemy import create_engine
from urllib.parse import quote
# sqlalchemy로 DB 연동
# 접속 정보
user = 'xxx'
pwd = 'xxx'
host = 'xxx.amazonaws.com'
port = xxx
database = 'xxx'
db_url = f'mysql+pymysql://{user}:{quote(pwd)}@{host}:{port}/{database}'
# 데이터베이스와 엔진 연결
try :
engine = create_engine(db_url)
# with engine.connect() as connection:
# # Start an explicit control over transaction
print('Olist DB에 연결되었습니다!')
except :
print("예외 발생")
2. 데이터 프레임으로 저장하기
# 함수로 SQL쿼리를 써서 전체 데이터프레임을 딕셔너리에 저장
def from_SQL_DB(table_list: dict):
''' SQL DB에 있는 전체 데이터프레임을
파이썬으로 가져와 딕셔너리 형태로 저장하는 함수 '''
df_dict = {}
for table in table_list:
query = f'SELECT * FROM {table}'
df_name = f'df_{table}'
df = pd.read_sql(query, con=engine)
df_dict[df_name] = df
return df_dict
# DB 불러와서 DATA FRAME에 저장
# DB 리스트
table_list = ['customers', 'geolocation', 'order_items', 'order_payments',
'order_reviews_notext', 'orders', 'products', 'sellers']
# 데이터프레임 이름과 값을 df_dic_list에 저장
df_dic_list = from_SQL_DB(table_list)
# 하나씩 불러와서 개별 데이터프레임 이름 변수에 값 저장
for df_name, df in (df_dic_list.items()):
globals()[df_name] = df
print(df_name)
# 엔진 종료 처리 / 작업 완료 후 변경사항에 대해서는 별도 connect & commit
engine.dispose()
# 저장된 데이터 프레임
# df_customers
# df_geolocation
# df_order_items
# df_order_payments
# df_order_reviews_notext
# df_orders
# df_products
# df_sellers
3. (참고) 파이썬에서 SQL 쿼리 작성
# pymysql 버전
# 코드 쿼리 작성
query = "SELECT * FROM orders"
# 데이터 프레임으로 변환
df = pd.read_sql(query, con)
print(df.shape)
df.head()
'TIL' 카테고리의 다른 글
[240402] 클러스터링 분석 - ③ 계층적 군집화와 덴드로그램 (1) | 2024.04.02 |
---|---|
[240401] 파이썬 유저 코호트 분석 (월별/주차별) (0) | 2024.04.01 |
[240328] 파이썬: 코드카타 49 & SQL: 코드카타 167 (0) | 2024.03.28 |
[240327] 파이썬: 코드카타 48 & SQL: 코드카타 166 (0) | 2024.03.27 |
[240326] 파이썬: 코드카타 47 & SQL: 코드카타 165 (0) | 2024.03.26 |