matvals app som sparar matvalen i i en variabel och skriver dem till en baserow database när man logga ut
To upload files, please first save the app
import streamlit as st
from datetime import datetime
from sqlalchemy import create_engine, Column, Integer, String, DateTime
from sqlalchemy.orm import DeclarativeBase, Session
# Database setup
class Base(DeclarativeBase):
pass
class FoodEntry(Base):
__tablename__ = 'food_entries'
id = Column(Integer, primary_key=True)
user = Column(String)
food_item = Column(String)
timestamp = Column(DateTime, default=datetime.utcnow)
engine = create_engine('sqlite:///food_tracker.db')
Base.metadata.create_all(bind=engine)
# Session state initialization
if 'logged_in' not in st.session_state:
st.session_state.logged_in = False
if 'username' not in st.session_state:
st.session_state.username = ''
if 'food_items' not in st.session_state:
st.session_state.food_items = []
# App title
st.title('Mat Tracker')
# Login/Logout section
col1, col2 = st.columns(2)
with col1:
if not st.session_state.logged_in:
username = st.text_input('Username')
if st.button('Log in'):
st.session_state.logged_in = True
st.session_state.username = username
st.rerun()
with col2:
if st.session_state.logged_in:
if st.button('Log out'):
# Save food items to database before logging out
with Session(engine) as session:
for food_item in st.session_state.food_items:
entry = FoodEntry(
user=st.session_state.username,
food_item=food_item
)
session.add(entry)
session.commit()
# Clear session state
st.session_state.logged_in = False
st.session_state.username = ''
st.session_state.food_items = []
st.rerun()
# Main app content
if st.session_state.logged_in:
st.write(f'Logged in as: {st.session_state.username}')
# Add new food item
new_food = st.text_input('Enter food item')
if st.button('Add food'):
if new_food:
st.session_state.food_items.append(new_food)
st.success('Food item added!')
# Display current food items
if st.session_state.food_items:
st.write('Your food items:')
for idx, item in enumerate(st.session_state.food_items, 1):
st.write(f'{idx}. {item}')
else:
st.write('No food items added yet.')
# Display previous entries from database
with Session(engine) as session:
previous_entries = session.query(FoodEntry).filter_by(user=st.session_state.username).all()
if previous_entries:
st.write('Previous entries:')
for entry in previous_entries:
st.write(f'{entry.timestamp}: {entry.food_item}')
Hi! I can help you with any questions about Streamlit and Python. What would you like to know?