# project-4 **Repository Path**: XuYang5478/project-4 ## Basic Information - **Project Name**: project-4 - **Description**: Python 面向对象数据库系统 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 10 - **Created**: 2022-05-20 - **Last Updated**: 2022-06-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 21214997 徐杨 # 1. 用户管理 新增`system/user`表格,里面存储用户信息,包括user_secrets、username、password、role等字段。 通过`role`对用户角色进行区分,`admin`角色可以对所有的数据库中的表格进行操作,而`user`角色只能操作自己创建的数据库中的表格。 ```json { "field_names": [ "id", "username", "password", "role" ], "field_types": [ "text", "text", "text", "text" ], "foreign_keys": {}, "primary_keys": [ "id" ], "rows": [ [ "1010101", "xuyang", "123456", "user" ], [ "1010102", "xuyang", "xuyang2078", "admin" ] ], "table_name": "user" } ``` # 2. 用户表格管理 每位用户都有一个`user_secrets`,创建数据库时将其加在数据库名称的后面,以`database_secrets`的格式创建数据库文件夹,这样就可以把每个用户的数据库区分开来。 对于没有添加`secrets`后缀的数据库文件夹,可以当作公共数据库,即任何用户都可以查看和操作,system数据库除外。 ![](./img/1.png) ```python def get_database(user_secrets): user = {} with open("db_files/system/user.json", 'r', encoding="UTF-8") as file: data = json.load(file) users = data["rows"] for u in users: if u[0] == user_secrets: user = u break dbs = [] dirs = os.listdir("./db_files") for d in dirs: if user[3] == "admin": if d.find(user_secrets) > 0: dbs.append(d.split('_')[0]) else: dbs.append(d) elif (d.find(user_secrets) > 0 or d.find("_") < 0) and d != "system": dbs.append(d.split('_')[0]) return dbs ``` # 3. Web UI 编写了一个Web UI界面,方便对数据库进行操作。 ![](./img/2.png) ![](./img/4.png) ![](./img/3.png) 1. 登录界面可以使用不同角色的账户登录。 2. user用户只能看到公共数据库和自己创建的数据库中的表格。 3. admin用户登录后可以查看所有用户的表格,其他用户的表格下面还会标注用户的secrets_id。 4. 可以通过UI界面对数据库和表格项进行增删改查的操作。 5. 暂未实现对表格数据进行增删改查的功能。 ![](./img/5.png) ![](./img/6.png)