Garbage Python
Garbageunknown
python
5 years ago
4.2 kB
7
Indexable
from sqlalchemy import Column, Integer, String, create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
# get baseclass from table descriptions
Base = declarative_base()
def menu():
print("1. Read all students\n"
"2. Get student by id\n"
"3. Add Student\n"
"4. Edit Student\n"
"5. Remove student\n"
"6. Search\n"
"7. Exit")
# Describing out table
class Students(Base):
__tablename__ = 'students'
id = Column(Integer, primary_key=True)
name = Column(String)
email = Column(String, unique=True)
year = Column(Integer)
def main():
# engine describes the database url
engine = create_engine('sqlite:///school.sqlite')
# Create a session maker (factory pattern)
Session = sessionmaker(bind=engine)
# Create a session using session maker
session = Session()
students = session.query(Students).all()
loop_number = 0
while loop_number != 7:
menu()
user_input = input()
if user_input == '1':
if len(students) == 0:
print("No students found")
else:
session.refresh(students)
for student in students:
print(f'id: {student.id}, name: {student.name}, email: {student.email}, year: {student.year}')
if user_input == '2':
chosen_id = int(input('Insert the id of the student you want to find'))
chosen_query = session.query(Students).filter(Students.id == chosen_id).all()
if session.query(Students).filter(Students.id == chosen_id).first() is None:
print("Student not found")
else:
print(f'name: {chosen_query[0].name}, email: {chosen_query[0].email}, year: {chosen_query[0].year}')
if user_input == '3':
in_name = input("Insert name of student:")
in_Email = input("Insert email of student:")
in_Year = int(input("insert birthyear of student:"))
new_student = Students(name=in_name, email=in_Email, year=in_Year)
session.add(new_student)
session.commit()
print(f'Added student: id: {new_student.id}, name: {in_name}, email: {in_Email}, year: {in_Year}')
if user_input == '4':
edit_id = int(input("input the id of the student you want to edit:"))
edit_name = input("input the name of the student you want to edit")
edit_email = input("email of the student you want to edit")
edit_year = input("Year born of the student you want to edit")
if session.query(Students).filter(Students.id == edit_id).first() is None:
print("Student not found")
else:
x = session.query(Students).get(edit_id)
x.name = edit_name
x.email = edit_email
x.year = edit_year
session.commit()
print("Student was edited successfully")
if user_input == '5':
delete_input = int(input("Select the id of the student you want to delete:"))
if session.query(Students).filter(Students.id == delete_input).first() is None:
print("Student not found")
else:
session.query(Students).filter(Students.id == delete_input).delete()
session.commit()
print("Student was removed successfully")
if user_input == '6':
user_search = input('write down the name of the student you want to search for')
search_result = session.query(Students).filter(Students.name.like(user_search))
if search_result.first() is None:
print("No students found")
else:
for each_student in search_result:
print(f'id: {each_student.id}, name: {each_student.name}, email: {each_student.email}, year: {each_student.year}')
if user_input == '7':
loop_number = 7
if __name__ == '__main__':
main()
Editor is loading...