Repository navigation
Expand file tree
/
Copy pathdb.py
More file actions
173 lines (139 loc) · 4.66 KB
/
Copy pathdb.py
File metadata and controls
173 lines (139 loc) · 4.66 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
# Simple DataBase
#Practice Database comprehension with basic queries
#DataBase Table
users = [
{
"id": 1 ,
"name": "David Makarena" ,
"email": "david@mail.com",
"city": "New York"
} ,
{
"id": 2 ,
"name": "Alice maina" ,
"email": "alice@mail.com" ,
"city": "new york" ,
} ,
{
"id": 3 ,
"name": "Paul Omondi" ,
"email": "paul@mail.com" ,
"city": "nairobi"
}
]
def get_users(database = users ):
return [ len(database) , database]
def get_user_id( user_id , database = users ): #All users
for user in database:
if user["id"] == user_id:
return user
else:
continue
return
def get_user( query , database = users ): #Custom user
found = []
try:
process_argument = query.split("=")
key_argument = process_argument[0].strip()
key_value = process_argument[1].strip()
except Exception as e:
return[ 0 , f"Error occured. probably because an invalid operator was used.\n{e}" ]
for user in database:
if user[key_argument] == key_value.lower():
found.append( user )
else:
continue
num_found = len(found)
if num_found >= 1 : #If it has appended at least one item / user
return [ num_found , found]
else: #If it is 0 ( It has no user )
return [ 0 ,"No results found for your query"] # 0 indicates "No results"
def delete_all_users(database = users):
database.clear()
return "Database successfully wiped out"
def delete_user( query , database = users):
to_delete = []
try:
process_argument = query.split("=")
key_argument = process_argument[0].strip()
key_value = process_argument[1].strip()
except Exception as e:
return[ 0 , f"Error occured. probably because an invalid operator was used.\n{e}" ]
for user in database:
if user[key_argument].lower() == key_value.lower():
to_delete.append( user["name"] )
database.remove( user )
else:
continue
if len(to_delete) >= 1: #If we have at least one user to delete
return[ len(to_delete) , to_delete ] #Number of users to delete , and their names
else:
return [ 0 , "No user matches that query" ]
def add_user( database = users , name = None , email = None , city= None , id = None ):
user = {}
user_id = len(database) + 1
user["id"] = user_id
if name:
user["name"] = name
if email:
user["email"] = email
if city:
user["city"] = city
else:
return "No data to add"
database.append( user )
print("New user successfully added to the database")
for key , value in user.items():
print(f"{key} = {value}")
#Start the app
while True:
choices ="""
1.Get all users
2.Get custom user
3.Delete all users
4.Delete custom user
5.Add user
6.Quit
"""
query_example = "name = david"
print(choices)
db_input = input(":")
while db_input not in [ "1","2","3","4","5","6"]:
print("Inavlid choice,\nPlease select between:")
print(choices)
db_input = input(":")
if db_input == "1": #Get all users
db_users = get_users()
num_db_users = db_users[0]
all_users = db_users[1]
if num_db_users >= 1:
print(f"{num_db_users} results found")
print(all_users)
else:
print(f"Database has got {num_db_users} users")
elif db_input == "2": #Get custom user
fetch_query = input(f"Enter query to fetch user\neg: {query_example}\n:")
found_results = get_user( fetch_query )
num_users = found_results[0]
found_users = found_results[1]
print(f"{num_users} Results found")
print(f"{found_users}")
elif db_input == "3": #Delete all users
deleted = delete_all_users()
print(deleted)
elif db_input == "4": #Delete custom user
delete_query = input(f"Enter query to delete user\neg: {query_example}\n:")
deleted = delete_user( delete_query )
num_deleted = deleted[0]
list_deleted = deleted[1]
print(f"{num_deleted} deleted")
print(f"{list_deleted}")
elif db_input == "5": #Add user
print("Non Negotiable. the user must have a name , email , and a city")
name = input("Enter a name: ")
email = input("Enter email: ")
city = input("Enter city: ")
add_user( name= name , email= email , city= city )
elif db_input == "6":
print("Program Ended")
break