[PYTHON] 파이썬으로 json, xml 파일 sql 형태로 저장하기
2023. 10. 4. 17:47ㆍDATA PROGRAMMING/PYTHON
1. json 파일 저장하기
import json
import sqlite3
우선 json 파일과 sql을 다루기 위한 라이브러리를 불러온다.
con = sqlite3.connect("./test.db")
cur = con.cursor()
cur.execute("CREATE TABLE IF NOT EXISTS "
"carjson(no INTEGER PRIMARY KEY, NAME TEXT, PRICE INTEGER, YEAR INTEGER)")
no를 PK로 하고, NAME, PRICE, YEAR를 컬럼으로 갖는 carjson이라는 테이블을 만들어 준다.
with open("C:/Users/user/Downloads/5주차실습/data/car.json", 'r') as json_file:
json_data = json.load(json_file)
제이슨 파일을 불러온다.
print(json_data)
json 데이터의 형태를 확인한다. PK 컬럼에 1, 2, 3, 4인 인덱스가 들어가므로 enumerate함수를 사용한다.
data_to_insert = []
for idx, (name, details) in enumerate(json_data.items(), start=1):
price = int(details['price'])
year = int(details['year']) if isinstance(details['year'], (int, str)) else details['year']
data_to_insert.append((idx, name, price, year))
딕셔너리 형태로 저장된 json 파일을 name(key)과 details(values)로 분리하준다. 그리고 필요한 값들을 리스트에 저장해 준다.
for idx,name,price,year in data_to_insert:
cur.execute("INSERT INTO carjson VALUES(?,?,?,?)", (idx,name,price,year))
이 리스트의 값들을 sql문으로 저장하면 된다.
cur.execute("SELECT * FROM carjson")
print(cur.fetchall())
cur.close()
con.commit()
con.close()
SELECT*FROM carjson을 통해 carjson 테이블의 모든 값들을 출력한다.
2. xml 파일 저장하기
import xml.etree.ElementTree as ET
xml 데이터를 다루기 위해 xml.etree.ElemenTree를 불러온다.
con = sqlite3.connect("./test.db")
cur = con.cursor()
cur.execute("CREATE TABLE IF NOT EXISTS "
"carxml(no INTEGER PRIMARY KEY, NAME TEXT, PRICE INTEGER, YEAR INTEGER)")
carxml 테이블을 만들어 준다.
xml_data = ET.parse("C:/Users/user/Downloads/5주차실습/data/car.xml")
root = xml_data.getroot()
cool_list = []
for i,car_name in enumerate(root.findall('carName'), start = 1):
name = car_name.attrib["name"]
price = int(car_name.find('price').text)
year = int(car_name.find('year').text)
cool_list.append((i,name,price,year))
xml 파일을 불러오고 각 값들을 테이블 정의에 맞게 형변환 해주고 cool_list에 저장한다.
for idx,name,price,year in cool_list:
cur.execute("INSERT INTO carxml VALUES(?,?,?,?)", (idx,name,price,year))
json에서와 마찬가지로 만들어 낸 리스트를 테이블 형태로 만든다.
cur.execute("SELECT * FROM carxml")
print(cur.fetchall())
cur.close()
con.commit()
con.close()
json 데이터를 다뤘던 것과 마찬가지로 테이블이 잘 만들어졌는지 확인한다.
'DATA PROGRAMMING > PYTHON' 카테고리의 다른 글
[PYTHON] matplotlib을 활용하여 3차원 그래프 그리기 (0) | 2023.10.06 |
---|---|
[PYTHON] PyQt를 활용하여 기본적인 프로그램 인터페이스 만들기 (0) | 2023.10.06 |
[파이썬] matplotlib 라이브러리를 활용한 금융 데이터 시각화 (0) | 2023.10.04 |
[PYTHON] yfinance를 활용하여 웹 상의 데이터 받아 분석하기 (0) | 2023.09.22 |
[PYTHON] 함수 데코레이터 활용 실습 (0) | 2023.09.20 |