좋습니다! 말씀하신 요구 사항에 맞춰 성질이 다른 데이터를 저장하고 검색할 수 있는 방식을 Python 예제와 함께 보여드릴게요.
✅ 1. MongoDB (NoSQL, 구조 자유롭고 확장성 좋음)
🔧 설치
bashpip install pymongo
💡 Python 예제
pythonfrom 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 예제
pythonimport 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 (관계형 + 유연성)
🔧 설치
bashpip install sqlite3 # (표준 라이브러리 포함되어 있어 별도 설치 불필요)
💡 Python 예제
pythonimport 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 + 유연성 | 쿼리 복잡, 구조적 통제 어려움 |
원하시는 저장 방식이 결정되면, 그에 맞는 구조 설계나 더 복잡한 쿼리 처리도 도와드릴 수 있어요. 어떤 쪽이 제일 끌리시나요?
댓글 없음:
댓글 쓰기