2023-11-14 20:50:38 +09:00

160 lines
5.3 KiB
Python

############################
# 데이터베이스 사용 이해하기
############################
# from tinydb import TinyDB, Query
import pandas as pd
from datetime import datetime
from pprint import pprint
from userdblib import fetch_user_by_email, fetch_user_by_id, fetch_users, insert_user, update_user, delete_user, create_table, get_new_id
# # 데이터베이스 생성 및 연결
# db = TinyDB('db.json')
# ###########################################
# # 데이터베이스 쿼리 함수들 #
# ###########################################
# # 데이터가 없으면 샘플 데이터 추가
# def create_table():
# if len(db.all()) == 0:
# users = [
# {'id': 1, 'name': '전 John', 'email': 'john@gmail.com', 'age': 20, 'created_at': '2021-01-01 00:00:00'},
# {'id': 2, 'name': '오 Jane', 'email': 'jane@gmail.com', 'age': 25, 'created_at': '2021-01-02 00:00:00'},
# {'id': 3, 'name': '방 Bob', 'email': 'bob@gmail.com', 'age': 30, 'created_at': '2021-01-03 00:00:00'},
# {'id': 4, 'name': '윤 Alice', 'email': 'alice@gmail.com', 'age': 35, 'created_at': '2021-01-04 00:00:00'},
# {'id': 5, 'name': '김 Bill', 'email': 'bill@gmail.com', 'age': 40, 'created_at': '2021-01-05 00:00:00'},
# ]
# db.insert_multiple(users)
# def get_new_id():
# users = fetch_users()
# new_id = users[-1]['id'] + 1
# return new_id
# def fetch_users():
# return db.all()
# def fetch_user_by_id(id):
# users = db.search(Query().id == id)
# if len(users) == 0:
# return []
# else:
# return users.pop()
# def fetch_user_by_email(email):
# users = db.search(Query().email == email)
# if len(users) == 0:
# return []
# else:
# return users.pop()
# def insert_user(user):
# # new_user = user_from_input()
# db.insert(user)
# def update_user(user):
# db.update(user, Query().id == user['id'])
# def delete_user(id):
# db.remove(Query().id == id)
###########################################
# 화면 기능 함수들 #
###########################################
def user_from_input():
print("#"*30 + " 사용자 정보 입력 " + "#"*30)
name = input("이름: ")
email = input("이메일: ")
age = int(input("나이: "))
created_at = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
user = {'id': get_new_id(), 'name': name, 'email': email, 'age': age, 'created_at': created_at}
return user
def user_from_input_update(user):
print("#"*30 + " 사용자 정보 업데이트 " + "#"*30)
name = input(f"이름({user['name']}): ")
email = input(f"이메일({user['email']}): ")
age = int(input(f"나이({user['age']}): "))
# created_at = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
user = {'id': user["id"], 'name': name, 'email': email, 'age': age, 'created_at': user["created_at"]}
return user
# Function to display all users
def display_users():
users = fetch_users()
for user in users:
print(f"ID:{user['id']}\n이름:{user['name']}\n전자메일:{user['email']}\n나이:{user['age']}\n가입날짜:{user['created_at']}\n")
def add_new_user():
user = user_from_input()
insert_user(user)
print("새 사용자가 추가되었습니다.")
def update_existing_user():
print("#"*30 + " 사용자 정보 수정 " + "#"*30)
id = int(input("수정할 사용자의 ID를 입력하세요: "))
user = fetch_user_by_id(id)
if len(user) == 0:
print("해당 ID의 사용자가 없습니다.")
else:
user = user_from_input_update(user)
user['id'] = id
update_user(user)
print("사용자 정보가 수정되었습니다.")
def delete_existing_user():
print("#"*30 + " 사용자 정보 삭제 " + "#"*30)
id = int(input("삭제할 사용자의 ID를 입력하세요: "))
user = fetch_user_by_id(id)
if len(user) == 0:
print("해당 ID의 사용자가 없습니다.")
else:
delete_user(id)
print("사용자 정보가 삭제되었습니다.")
def search_user_by_email():
print("#"*30 + " 사용자 정보 검색 " + "#"*30)
email = input("검색할 사용자의 이메일을 입력하세요: ")
user = fetch_user_by_email(email)
if len(user) == 0:
print("해당 이메일의 사용자가 없습니다.")
else:
print(f"ID:{user['id']}\n이름:{user['name']}\n전자메일:{user['email']}\n나이:{user['age']}\n가입날짜:{user['created_at']}\n")
###########################################
# main 함수
create_table()
while True:
print("#"*30 + " 사용자 관리 프로그램 " + "#"*30)
print("1. 사용자 전체 조회")
print("2. 사용자 추가")
print("3. 사용자 수정")
print("4. 사용자 삭제")
print("5. 이메일로 사용자 검색")
print("6. 종료")
print("#"*80)
menu = int(input("메뉴를 선택하세요: "))
if menu == 1:
display_users()
elif menu == 2:
add_new_user()
elif menu == 3:
update_existing_user()
elif menu == 4:
delete_existing_user()
elif menu == 5:
search_user_by_email()
elif menu == 6:
print("프로그램을 종료합니다.")
break
else:
print("잘못된 메뉴입니다. 다시 선택하세요.")