博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ARTS打卡计划第5周-TIPS
阅读量:6309 次
发布时间:2019-06-22

本文共 1293 字,大约阅读时间需要 4 分钟。

使用django开发web 的时候,经常需要在系统第一次初始化的时候,添加一些类似字典的初始化数据,这些数据存在数据库之中。我分享一种,在初始化的时候,自动执行一些向数据库添加记录的操作。

在我们的项目的某一个app的目录下,在apps.py中添加类似代码

class ErpConfigConfig(AppConfig):    name = 'erp_config'    def ready(self):        post_migrate.connect(import_sql, self, )        print('erp_config 初始化成功')

  然后我们需要定义一个import_sql方法,该方法进行一些初始化数据的操作。这里我使用的是导入2个sql文件,其实你也可以定义一些model的save的操作。

def is_data_empty():    from .models import DictType, DictValue    count_dict_type = DictType.objects.count()    if count_dict_type:        logging.error("erp_config_dict_type表 已经有数据,无法导入")    count_dict_value = DictValue.objects.count()    if count_dict_value:        logging.error("erp_config_dict_value表 已经有数据,无法导入")    if count_dict_type or count_dict_value:        return False    return Truedef import_sql(sender, **kwargs):    if is_data_empty():        load_data_from_sql('erp_config_dict_type.sql')        load_data_from_sql('erp_config_dict_value.sql')def load_data_from_sql(filename):    file_path = os.path.join(os.path.dirname(__file__), 'sql', filename)    sql_statement = open(file_path).read()    with connection.cursor() as cursor:        cursor.execute(sql_statement)

  这里需要注意的是,必须使用post_migrate而不是直接执行import_sql,因为在你migrate的时候,表还未建好,你执行操作表的行为都将报错。

转载于:https://www.cnblogs.com/dongqiSilent/p/10896798.html

你可能感兴趣的文章
SLAM数据集
查看>>
c#学习笔记05——数组&集合
查看>>
【图论算法】Dijstra&BFS
查看>>
注册和上传文件(头像)
查看>>
使用OVS
查看>>
键盘回收的几种方法
查看>>
Python(条件判断和循环)
查看>>
day4 linux安装python
查看>>
LeetCode Container With Most Water (Two Pointers)
查看>>
vue (v-if show 问题)
查看>>
https基础
查看>>
css3 canvas之刮刮卡效果
查看>>
并查集模板
查看>>
RESTful Mongodb
查看>>
BZOJ3237:[AHOI2013]连通图(线段树分治,并查集)
查看>>
如何提高Ajax性能
查看>>
Android--自定义加载框
查看>>
LINUX下 lamp安装及配置
查看>>
BZOJ3105 [cqoi2013]新Nim游戏
查看>>
困惑的前置操作与后置操作
查看>>