create a stremlit interface to enter someone information like name age
Drop files here
or click to upload
import streamlit as st
from datetime import datetime
from sqlalchemy import create_engine, String, Integer, DateTime
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
import pandas as pd
# Database setup
class Base(DeclarativeBase):
pass
class Person(Base):
__tablename__ = "people"
id: Mapped[int] = mapped_column(primary_key=True)
name: Mapped[str] = mapped_column(String(100))
age: Mapped[int] = mapped_column(Integer)
created_at: Mapped[datetime] = mapped_column(DateTime, default=datetime.utcnow)
engine = create_engine("sqlite:///people.sqlite")
Base.metadata.create_all(bind=engine)
st.title("Personal Information Form")
with st.form("person_form"):
name = st.text_input("Name")
age = st.number_input("Age", min_value=0, max_value=150)
submitted = st.form_submit_button("Submit")
if submitted:
if name and age > 0:
# Create new person
new_person = Person(name=name, age=age)
# Save to database
from sqlalchemy.orm import Session
with Session(engine) as session:
session.add(new_person)
session.commit()
st.success("Information saved successfully!")
else:
st.error("Please fill out all fields correctly.")
# Display existing records
st.subheader("Existing Records")
# Query all records
from sqlalchemy.orm import Session
with Session(engine) as session:
records = session.query(Person).all()
if records:
# Convert to DataFrame for display
data = [{
"Name": person.name,
"Age": person.age,
"Added on": person.created_at.strftime("%Y-%m-%d %H:%M:%S")
} for person in records]
df = pd.DataFrame(data)
st.table(df)
else:
st.info("No records found.")
Hi! I can help you with any questions about Streamlit and Python. What would you like to know?