初始化数据库脚本升级完成

pull/1/head
李强 2021-03-03 00:28:21 +08:00
parent a1e7ef2dca
commit 0b415bc636
3 changed files with 42 additions and 15 deletions

View File

@ -14,35 +14,62 @@ class Command(BaseCommand):
项目初始化命令: python manage.py initialization 项目初始化命令: python manage.py initialization
""" """
def customSql(self, sql_list): def customSql(self, sql_list, model_name, table_name):
""" """
批量执行sql 批量执行sql
:param sql_list: :param sql_list:
:param table_name: 表名
:return: :return:
""" """
with connection.cursor() as cursor: with connection.cursor() as cursor:
num = 0
for ele in table_name.split(','):
cursor.execute("select count(*) from {}".format(ele))
result = cursor.fetchone()
num += result[0]
if num > 0:
while True:
inp = input(f'[{model_name}]模型已初始化完成,继续将清空[{table_name}]表中所有数据,是否继续初始化?【 Y/N 】')
if inp.upper() == 'N':
return False
elif inp.upper() == 'Y':
logger.info(f'正在清空[{table_name}]中数据...')
cursor.execute("SET foreign_key_checks = 0")
for ele in table_name.split(','):
cursor.execute("truncate table {};".format(ele))
cursor.execute("SET foreign_key_checks = 1")
connection.commit()
logger.info(f'清空[{table_name}]中数据{result[0]}')
break
for sql in sql_list: for sql in sql_list:
cursor.execute(sql) cursor.execute(sql)
connection.commit() connection.commit()
return True
def init(self, sql_filename, model_name): def init(self, sql_filename, model_name, table_name):
""" """
初始化 初始化
:param sql_filename: sql存放位置 :param sql_filename: sql存放位置
:param model_name: 模块名 :param model_name: 模块名
:param table_name: 表名
:return: :return:
""" """
logger.info(f'正在初始化[{model_name}]中...') logger.info(f'正在初始化[{model_name}]中...')
self.customSql(getSql(sql_filename)) if self.customSql(getSql(sql_filename), model_name, table_name):
logger.info(f'[{model_name}]初始化完成!') logger.info(f'[{model_name}]初始化完成!')
else:
logger.info(f'已取消[{table_name}]初始化')
def handle(self, *args, **options): def handle(self, *args, **options):
self.init(os.path.join('system', 'system_dictdata.sql'), '字典管理') self.init(os.path.join('system', 'system_dictdata.sql'), '字典管理', 'system_dictdata')
self.init(os.path.join('system', 'system_dictdetails.sql'), '字典详情') self.init(os.path.join('system', 'system_dictdetails.sql'), '字典详情', 'system_dictdetails')
self.init(os.path.join('system', 'system_configsettings.sql'), '参数设置') self.init(os.path.join('system', 'system_configsettings.sql'), '参数设置', 'system_configsettings')
self.init(os.path.join('permission', 'permission_post.sql'), '岗位管理') self.init(os.path.join('permission', 'permission_post.sql'), '岗位管理', 'permission_post')
self.init(os.path.join('permission', 'permission_dept.sql'), '部门管理') self.init(os.path.join('permission', 'permission_dept.sql'), '部门管理', 'permission_dept')
self.init(os.path.join('permission', 'permission_menu.sql'), '菜单管理') self.init(os.path.join('permission', 'permission_menu.sql'), '菜单管理', 'permission_menu')
self.init(os.path.join('permission', 'permission_role.sql'), '角色管理') self.init(os.path.join('permission', 'permission_role.sql'), '角色管理',
self.init(os.path.join('permission', 'permission_userprofile.sql'), '用户管理') ','.join(['permission_role', 'permission_role_dept', 'permission_role_menu']))
self.init(os.path.join('permission', 'permission_userprofile.sql'), '用户管理', ','.join(
['permission_userprofile_groups', 'permission_userprofile', 'permission_userprofile_role',
'permission_userprofile_post']))

View File

@ -19,7 +19,7 @@ class Menu(CoreModel):
# ('OPTIONS', 'OPTIONS'), # ('OPTIONS', 'OPTIONS'),
# ('TRACE', 'TRACE'), # ('TRACE', 'TRACE'),
# ) # )
parentId = ForeignKey(to='Menu', on_delete=CASCADE, verbose_name="上级菜单", null=True, blank=True, ) parentId = ForeignKey(to='Menu', on_delete=CASCADE, verbose_name="上级菜单", null=True, blank=True, db_constraint=False)
menuType = CharField(max_length=8, verbose_name="菜单类型") menuType = CharField(max_length=8, verbose_name="菜单类型")
icon = CharField(max_length=64, verbose_name="菜单图标", null=True, blank=True) icon = CharField(max_length=64, verbose_name="菜单图标", null=True, blank=True)
name = CharField(max_length=64, verbose_name="菜单名称") name = CharField(max_length=64, verbose_name="菜单名称")

View File

@ -9,7 +9,7 @@ class DictDetails(CoreModel):
is_default = BooleanField(verbose_name="是否默认", default=False) is_default = BooleanField(verbose_name="是否默认", default=False)
status = CharField(max_length=2, verbose_name="字典状态") status = CharField(max_length=2, verbose_name="字典状态")
sort = CharField(max_length=256, verbose_name="字典排序") sort = CharField(max_length=256, verbose_name="字典排序")
dict_data = ForeignKey(to='DictData', on_delete=CASCADE, verbose_name="关联字典") dict_data = ForeignKey(to='DictData', on_delete=CASCADE, verbose_name="关联字典",db_constraint=False)
remark = CharField(max_length=256, verbose_name="备注", null=True, blank=True) remark = CharField(max_length=256, verbose_name="备注", null=True, blank=True)
class Meta: class Meta: