Остались непонятки с GUI. Оно вам нужно?
При таких требованиях sqlite хороший вариант если его изолировать при помощи алхимии https://www.sqlalchemy.org/
MySQL или postgres потребуют поднятия сервера, что может оказаться вам неудобно
Аналогично mongodb.
tinydb Для совсем маленьких приложений. Не думаю что оно будет быстро работать.
Остальные перечисленные выше базы для двоечки.
Да еще забыл, в свое время использовали ZODB думал оно умерло, но вроде как ни странно пока еще живо.
import ZODB from BTrees.OOBTree import OOBTree connection = ZODB.connection('mydata.fs') root = connection.root() if "students" not in root: st = OOBTree() root["students"] = st st[("Иванов","Иван","Иванович")] = {"zp":30,"sd":55} st[("Петров","Иван","Иванович")] = {"zp":40} for i,v in st.items(): v["cost"]=22 else: st = root["students"] x = st[("Петров","Иван","Иванович")] print(x)