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

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
"""
def customSql(self, sql_list):
def customSql(self, sql_list, model_name, table_name):
"""
批量执行sql
:param sql_list:
:param table_name: 表名
:return:
"""
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:
cursor.execute(sql)
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 model_name: 模块名
:param table_name: 表名
:return:
"""
logger.info(f'正在初始化[{model_name}]中...')
self.customSql(getSql(sql_filename))
logger.info(f'[{model_name}]初始化完成!')
if self.customSql(getSql(sql_filename), model_name, table_name):
logger.info(f'[{model_name}]初始化完成!')
else:
logger.info(f'已取消[{table_name}]初始化')
def handle(self, *args, **options):
self.init(os.path.join('system', 'system_dictdata.sql'), '字典管理')
self.init(os.path.join('system', 'system_dictdetails.sql'), '字典详情')
self.init(os.path.join('system', 'system_configsettings.sql'), '参数设置')
self.init(os.path.join('permission', 'permission_post.sql'), '岗位管理')
self.init(os.path.join('permission', 'permission_dept.sql'), '部门管理')
self.init(os.path.join('permission', 'permission_menu.sql'), '菜单管理')
self.init(os.path.join('permission', 'permission_role.sql'), '角色管理')
self.init(os.path.join('permission', 'permission_userprofile.sql'), '用户管理')
self.init(os.path.join('system', 'system_dictdata.sql'), '字典管理', 'system_dictdata')
self.init(os.path.join('system', 'system_dictdetails.sql'), '字典详情', 'system_dictdetails')
self.init(os.path.join('system', 'system_configsettings.sql'), '参数设置', 'system_configsettings')
self.init(os.path.join('permission', 'permission_post.sql'), '岗位管理', 'permission_post')
self.init(os.path.join('permission', 'permission_dept.sql'), '部门管理', 'permission_dept')
self.init(os.path.join('permission', 'permission_menu.sql'), '菜单管理', 'permission_menu')
self.init(os.path.join('permission', 'permission_role.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'),
# ('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="菜单类型")
icon = CharField(max_length=64, verbose_name="菜单图标", null=True, blank=True)
name = CharField(max_length=64, verbose_name="菜单名称")

View File

@ -9,7 +9,7 @@ class DictDetails(CoreModel):
is_default = BooleanField(verbose_name="是否默认", default=False)
status = CharField(max_length=2, 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)
class Meta: