import streamlit as st
from pymongo import MongoClient
from datetime import datetime
import pandas as pd
# MongoDB에 연결
client = MongoClient('localhost', 27017)
db = client['schedule']
collection = db['events']
# Streamlit 페이지 레이아웃
st.title("일정 기록 페이지")
# 입력 폼
event_date = st.date_input("스케줄 날짜")
priority = st.selectbox("우선순위", ["낮음", "보통", "높음"])
location = st.text_input("장소")
if st.button("일정 추가"):
# 입력한 데이터를 MongoDB에 삽입
event_data = {
'date': datetime.combine(event_date, datetime.min.time()),
'priority': priority,
'location': location,
'timestamp': datetime.now()
}
collection.insert_one(event_data)
st.success("일정이 추가되었습니다.")
# MongoDB에서 데이터 조회
st.title("일정 목록")
cursor = collection.find()
# 조회한 데이터를 테이블로 표시
event_list = list(cursor)
if event_list:
df = pd.DataFrame(event_list)
st.table(df)
else:
st.info("일정이 없습니다.")
import streamlit as st
from pymongo import MongoClient
from datetime import datetime, time, timedelta
import pandas as pd
# MongoDB에 연결
client = MongoClient('localhost', 27017)
db = client['schedule']
collection = db['events']
# Streamlit 페이지 레이아웃
st.title("일정 기록 페이지")
# 입력 폼
event_date = st.date_input("스케줄 날짜")
event_time = st.time_input("스케줄 시간")
priority = st.selectbox("우선순위", ["낮음", "보통", "높음"])
location = st.text_input("장소")
if st.button("일정 추가"):
# 입력한 데이터를 MongoDB에 삽입
# Combine date and time using datetime.combine
event_datetime = datetime.combine(event_date, time(hour=event_time.hour, minute=event_time.minute))
event_data = {
'datetime': event_datetime,
'priority': priority,
'location': location,
'timestamp': datetime.now()
}
collection.insert_one(event_data)
st.success("일정이 추가되었습니다.")
# MongoDB에서 데이터 조회
st.title("일정 목록")
cursor = collection.find()
# 조회한 데이터를 테이블로 표시
event_list = list(cursor)
if event_list:
# DataFrame을 생성할 때 '_id' 필드를 제외하고 출력
df = pd.DataFrame(event_list, columns=['datetime', 'priority', 'location', 'timestamp'])
st.table(df)
else:
st.info("일정이 없습니다.")
사진 기능까지 포함 사례
import streamlit as st
from pymongo import MongoClient
from datetime import datetime
from PIL import Image
# MongoDB에 연결
client = MongoClient('localhost', 27017)
db = client['schedule_photo']
collection = db['events']
# Streamlit 페이지 레이아웃
st.title("일정 기록 페이지")
# 입력 폼
event_date = st.date_input("스케줄 날짜")
priority = st.selectbox("우선순위", ["낮음", "보통", "높음"])
location = st.text_input("장소")
uploaded_file = st.file_uploader("사진 업로드", type=["jpg", "jpeg", "png"])
if st.button("일정 추가"):
# 입력한 데이터를 MongoDB에 삽입
event_data = {
'date': datetime.combine(event_date, datetime.min.time()), # datetime.datetime으로 변환
'priority': priority,
'location': location,
'timestamp': datetime.now(),
'photo': None
}
if uploaded_file is not None:
# 업로드한 파일을 MongoDB에 저장하고 해당 URL을 데이터에 추가
image = Image.open(uploaded_file)
photo_url = f"photos/{datetime.now().strftime('%Y%m%d%H%M%S')}.png"
image.save(photo_url)
event_data['photo'] = photo_url
collection.insert_one(event_data)
st.success("일정이 추가되었습니다.")
# MongoDB에서 데이터 조회
st.title("일정 목록")
cursor = collection.find()
# 조회한 데이터를 테이블로 표시
event_list = list(cursor)
if event_list:
for event in event_list:
# 사진이 있는 경우 작게 표시
if event['photo']:
st.image(event['photo'], caption=f"{event['date']} - {event['location']}", width=150)
st.write(f"날짜: {event['date'].strftime('%Y-%m-%d')}, 우선순위: {event['priority']}, 장소: {event['location']}")
else:
st.info("일정이 없습니다.")