from sqlalchemy import create_engine
import pandas as pd
# 데이터베이스 접속 정보
DATABASE_TYPE = 'mysql'
DBAPI = 'pymysql'
HOST = 'localhost'
USER = 'root'
PASSWORD = 'dlawjd' # 본인 mysql 의 데이터베이스 비밀번호
DATABASE = 'sc5'
PORT = '3306'
# 데이터베이스 URI 설정 (경로 설정)
DATABASE_URI = f'{DATABASE_TYPE}+{DBAPI}://{USER}:{PASSWORD}@{HOST}:{PORT}/{DATABASE}'
engine = create_engine(DATABASE_URI)
# Connection 객체를 사용하여 쿼리 실행
query = "SELECT * FROM orders LIMIT 10"
df = pd.read_sql_query(query, engine)
# 결과 출력
display(df)
from sqlalchemy import create_engine, text
import pandas as pd
# 데이터베이스 접속 정보
DATABASE_TYPE = 'mysql'
DBAPI = 'pymysql'
HOST = 'sparta.cbt9ceqjwlr9.ap-northeast-2.rds.amazonaws.com'
USER = 'sparta_student'
PASSWORD = 'sparta99'
DATABASE = 'sparta'
PORT = '3306'
# 데이터베이스 URI 설정
DATABASE_URI = f'{DATABASE_TYPE}+{DBAPI}://{USER}:{PASSWORD}@{HOST}:{PORT}/{DATABASE}'
engine = create_engine(DATABASE_URI)
# Connection 객체를 사용하여 쿼리 실행
query = "SELECT * FROM checkins LIMIT 10"
df = pd.read_sql_query(query, engine)
# 결과 출력
display(df)
Application Programming Interface


호출하기
- Python 모듈 중 request 모듈을 사용할 예정
- 메소드( Create, Read, Update, Delete 에 상응하는)
- POST: 생성하기
- GET: 가져오기 → 데이터 수집 관점에서 일반적으로 씀.
- PUT: 수정하기
- DELETE: 삭제하기
- 200 응답이 돌아오면 정상 작동하는 것
- 404 등 4, 5로 시작하는 것은 작동하지 않은 것

import pandas as pd
import requests
from google.colab import userdata
import xml.etree.ElementTree as ET
# request
url = 'http://api.kcisa.kr/openapi/service/rest/meta5/getKFCC0502'
params = {
('serviceKey', userdata.get('boxoffice_api_key'))
}
response = requests.get(url, params)
# XML parsing
root = ET.fromstring(response.text)
data = []
for item in root.findall('.//item'):
item_data = {}
for child in item:
item_data[child.tag] = child.text
data.append(item_data)
df = pd.DataFrame(data)
df.head()

import pandas as pd
import requests
from google.colab import userdata
import xml.etree.ElementTree as ET
# request
url = 'http://apis.data.go.kr/1360000/WthrWrnInfoService/getWthrWrnList'
params = {
('ServiceKey', userdata.get('weather_api_decoding')),
('pageNo', '1'),
('numOfRows', '30'),
('fromTmFc', '20250113'),
('toTmFc', '20250118')
}
response = requests.get(url, params)
# 확인용
#print(response.text)
# XML parsing
root = ET.fromstring(response.text)
data = []
for item in root.findall('.//item'):
item_data = {}
for child in item:
item_data[child.tag] = child.text
data.append(item_data)
df = pd.DataFrame(data)
df.head()
결과:

root = ET.fromstring(response.text)
row_dict = {'item_name':[],
'item_code':[],
'kind_name':[],
'kind_code':[],
'rank':[],
'rank_code':[]}
#data/item 계층 밑의 값을 list으로 가져와 iteration
for i in root.findall('./data/item'):
# item_name부터 텍스트를 가져와 딕셔너리에 저장
for j in i:
row_dict[j.tag].append(j.text)
df = pd.DataFrame(row_dict)