2025년 8월 8일 금요일

json

 좋습니다! 말씀하신 요구 사항에 맞춰 성질이 다른 데이터를 저장하고 검색할 수 있는 방식을 Python 예제와 함께 보여드릴게요.


✅ 1. MongoDB (NoSQL, 구조 자유롭고 확장성 좋음)

🔧 설치

bash
pip install pymongo

💡 Python 예제

python
from pymongo import MongoClient # MongoDB 접속 client = MongoClient("mongodb://localhost:27017/") db = client["my_database"] collection = db["my_data"] # 데이터 입력 (성질이 다른 데이터들) collection.insert_many([ {"type": "location", "data": {"latitude": 37.5665, "longitude": 126.9780}}, {"type": "contact", "data": {"name": "서울시청", "phone": "02-120"}}, {"type": "event", "data": {"title": "불꽃놀이", "date": "2025-08-15"}} ]) # 특정 유형의 데이터만 조회 (예: location) results = collection.find({"type": "location"}) for doc in results: print(doc)

✅ 2. JSON 파일 (간단한 저장, 테스트용 추천)

💡 Python 예제

python
import json # 다양한 성질의 데이터 data = [ {"type": "location", "data": {"latitude": 37.5665, "longitude": 126.9780}}, {"type": "contact", "data": {"name": "서울시청", "phone": "02-120"}}, {"type": "event", "data": {"title": "불꽃놀이", "date": "2025-08-15"}} ] # 저장 with open("data.json", "w", encoding="utf-8") as f: json.dump(data, f, ensure_ascii=False, indent=2) # 읽기 및 특정 타입 필터링 with open("data.json", "r", encoding="utf-8") as f: loaded_data = json.load(f) locations = [item for item in loaded_data if item["type"] == "location"] print(locations)

✅ 3. SQLite + JSON (관계형 + 유연성)

🔧 설치

bash
pip install sqlite3 # (표준 라이브러리 포함되어 있어 별도 설치 불필요)

💡 Python 예제

python
import sqlite3 import json # 데이터베이스 연결 conn = sqlite3.connect("data.db") cursor = conn.cursor() # 테이블 생성 (JSON 형식 저장) cursor.execute(""" CREATE TABLE IF NOT EXISTS my_data ( id INTEGER PRIMARY KEY AUTOINCREMENT, type TEXT, data TEXT ) """) # 데이터 삽입 items = [ ("location", json.dumps({"latitude": 37.5665, "longitude": 126.9780})), ("contact", json.dumps({"name": "서울시청", "phone": "02-120"})), ("event", json.dumps({"title": "불꽃놀이", "date": "2025-08-15"})) ] cursor.executemany("INSERT INTO my_data (type, data) VALUES (?, ?)", items) conn.commit() # 데이터 검색 (예: contact만 조회) cursor.execute("SELECT data FROM my_data WHERE type = 'contact'") results = cursor.fetchall() for row in results: print(json.loads(row[0])) conn.close()

📝 정리: 선택 기준

방식장점단점
MongoDB유연하고 확장 가능, 검색 성능 우수서버 필요 (또는 Atlas 사용)
JSON 파일간단하고 휴대성 좋음대용량/속도에 부적합
SQLite + JSON로컬 DB + 유연성쿼리 복잡, 구조적 통제 어려움

원하시는 저장 방식이 결정되면, 그에 맞는 구조 설계나 더 복잡한 쿼리 처리도 도와드릴 수 있어요. 어떤 쪽이 제일 끌리시나요?


댓글 없음:

댓글 쓰기