开源 企业版 高校版 私有云 模力方舟 AI 队友
代码拉取完成,页面将自动刷新
加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
已有帐号? 立即登录
文件
master
分支 (1)
master
master
分支 (1)
master
克隆/下载
克隆/下载
提示
下载代码请复制以下命令到终端执行
为确保你提交的代码身份被 Gitee 正确识别,请执行以下命令完成配置
初次使用 SSH 协议进行代码克隆、推送等操作时,需按下述提示完成 SSH 配置
1 生成 RSA 密钥
2 获取 RSA 公钥内容,并配置到 SSH公钥
在 Gitee 上使用 SVN,请访问 使用指南
使用 HTTPS 协议时,命令行会出现如下账号密码验证步骤。基于安全考虑,Gitee 建议 配置并使用私人令牌 替代登录密码进行克隆、推送等操作
Username for 'https://gitee.com': userName
Password for 'https://userName@gitee.com': # 私人令牌
master
分支 (1)
master
initialize.py 5.62 KB
一键复制 编辑 原始数据 按行查看 历史
redgreat 提交于 2024年05月24日 14:47 +08:00 . init
#!/usr/bin/python
# -*- coding: utf-8 -*-
# @version : 1.0
# @Create Time : 2022年11月23日 11:21
# @File : initialize.py
# @IDE : PyCharm
# @desc : 简要说明
from enum import Enum
from sqlalchemy import insert
from core.database import db_getter
from utils.excel.excel_manage import ExcelManage
from application.settings import BASE_DIR, VERSION
import os
from apps.vadmin.auth import models as auth_models
from apps.vadmin.system import models as system_models
from apps.vadmin.help import models as help_models
import subprocess
from html import escape
class Environment(str, Enum):
dev = "dev"
pro = "pro"
class InitializeData:
"""
初始化数据
生成步骤:
1. 读取数据
2. 获取数据库
3. 创建数据
"""
SCRIPT_DIR = os.path.join(BASE_DIR, 'scripts', 'initialize')
def __init__(self):
self.sheet_names = []
self.datas = {}
self.ex = None
self.db = None
self.__serializer_data()
self.__get_sheet_data()
@classmethod
def migrate_model(cls, env: Environment = Environment.pro):
"""
模型迁移映射到数据库
"""
subprocess.check_call(['alembic', '--name', f'{env.value}', 'revision', '--autogenerate', '-m', f'{VERSION}'], cwd=BASE_DIR)
subprocess.check_call(['alembic', '--name', f'{env.value}', 'upgrade', 'head'], cwd=BASE_DIR)
print(f"环境:{env}{VERSION} 数据库表迁移完成")
def __serializer_data(self):
"""
序列化数据,将excel数据转为python对象
"""
self.ex = ExcelManage()
self.ex.open_workbook(os.path.join(self.SCRIPT_DIR, 'data', 'init.xlsx'), read_only=True)
self.sheet_names = self.ex.get_sheets()
def __get_sheet_data(self):
"""
获取工作区数据
"""
for sheet in self.sheet_names:
sheet_data = []
self.ex.open_sheet(sheet)
headers = self.ex.get_header()
datas = self.ex.readlines(min_row=2, max_col=len(headers))
for row in datas:
sheet_data.append(dict(zip(headers, row)))
self.datas[sheet] = sheet_data
async def __generate_data(self, table_name: str, model):
"""
生成数据
:param table_name: 表名
:param model: 数据表模型
"""
async_session = db_getter()
db = await async_session.__anext__()
datas = self.datas.get(table_name)
escaped_datas = [{k: escape(v) if isinstance(v, str) else v for k, v in d.items()} for d in datas]
await db.execute(insert(model), escaped_datas)
await db.flush()
await db.commit()
print(f"{table_name} 表数据已生成")
async def generate_dept(self):
"""
生成部门详情数据
"""
await self.__generate_data("vadmin_auth_dept", auth_models.VadminDept)
async def generate_user_dept(self):
"""
生成用户关联部门详情数据
"""
await self.__generate_data("vadmin_auth_user_depts", auth_models.vadmin_auth_user_depts)
async def generate_menu(self):
"""
生成菜单数据
"""
await self.__generate_data("vadmin_auth_menu", auth_models.VadminMenu)
async def generate_role(self):
"""
生成角色
"""
await self.__generate_data("vadmin_auth_role", auth_models.VadminRole)
async def generate_user(self):
"""
生成用户
"""
await self.__generate_data("vadmin_auth_user", auth_models.VadminUser)
async def generate_user_role(self):
"""
生成用户
"""
await self.__generate_data("vadmin_auth_user_roles", auth_models.vadmin_auth_user_roles)
async def generate_system_tab(self):
"""
生成系统配置分类数据
"""
await self.__generate_data("vadmin_system_settings_tab", system_models.VadminSystemSettingsTab)
async def generate_system_config(self):
"""
生成系统配置数据
"""
await self.__generate_data("vadmin_system_settings", system_models.VadminSystemSettings)
async def generate_dict_type(self):
"""
生成字典类型数据
"""
await self.__generate_data("vadmin_system_dict_type", system_models.VadminDictType)
async def generate_dict_details(self):
"""
生成字典详情数据
"""
await self.__generate_data("vadmin_system_dict_details", system_models.VadminDictDetails)
async def generate_help_issue_category(self):
"""
生成常见问题类别数据
"""
await self.__generate_data("vadmin_help_issue_category", help_models.VadminIssueCategory)
async def generate_help_issue(self):
"""
生成常见问题详情数据
"""
await self.__generate_data("vadmin_help_issue", help_models.VadminIssue)
async def run(self, env: Environment = Environment.pro):
"""
执行初始化工作
"""
self.migrate_model(env)
await self.generate_menu()
await self.generate_role()
await self.generate_dept()
await self.generate_user()
await self.generate_user_dept()
await self.generate_user_role()
await self.generate_system_tab()
await self.generate_dict_type()
await self.generate_system_config()
await self.generate_dict_details()
await self.generate_help_issue_category()
await self.generate_help_issue()
print(f"环境:{env}{VERSION} 数据已初始化完成")
Loading...
举报
举报成功
我们将于2个工作日内通过站内信反馈结果给你!
请认真填写举报原因,尽可能描述详细。
请选择举报类型
取消
发送
误判申诉

此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。

如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。

取消
提交

简介

数据管理平台
取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
编辑仓库简介
简介内容
主页
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/rubygreat/dbadmin.git
git@gitee.com:rubygreat/dbadmin.git
rubygreat
dbadmin
dbadmin
master
点此查找更多帮助

搜索帮助

评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册

AltStyle によって変換されたページ (->オリジナル) /