55 lines
1.7 KiB
Python
55 lines
1.7 KiB
Python
from tinydb import TinyDB, Query
|
|
from datetime import datetime
|
|
from pprint import pprint
|
|
# 데이터베이스 생성 및 연결
|
|
db = TinyDB('userdb.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)
|
|
|
|
|