在脚本中单独使用django的ORM模型详解
作者:kkevinyang 发布时间:2021-03-09 05:17:26
有时候在测试django中一些模块时,不想重新跑一整个django项目,只想跑单个文件,正好写在if __name__ == '__main__': 这样也不会打扰到正常的代码逻辑
方法
正常方法
大家都知道的方法就是'python manage.py shell',当然我知道这可能不是你需要的;
更好用的方法
在脚本中import模型前调用下面几行即可:
import os, sys
BASE_DIR = os.path.dirname(os.path.abspath(__file__)) # 定位到你的django根目录
sys.path.append(os.path.abspath(os.path.join(BASE_DIR, os.pardir)))
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "dj_tasks.settings") # 你的django的settings文件
接下来再调用'from XXXX.models import XXX'就不会报错了
补充知识:Django使用外部文件对models操作容易产生的问题
看代码吧!
from pv_server.models import IVCurvesInfo, FaultType
import os
import django
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'PV_Moniter.settings')
django.setup()
def add_fault_type(fault_list, true_data_list, fault_decription_list=None):
for item in fault_list:
idx = fault_list.index(item)
true_data = true_data_list[idx]
fault_decription = fault_decription_list[idx] if (fault_decription_list and fault_decription_list[idx]) \
else None
FaultType.addFault.create_faultType(item, true_data,fault_decription)
if __name__ == '__main__':
add_fault_type(['normal', 'partial shadow_1', 'partial shadow_2',
'partial shadow_3', 'short circuit_1', 'short circuit_2',
'degradation_1', 'degradation_2', 'open_circuit'],
[0] * 9)
print("Done!")
以上述代码为例
会产生
django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
的问题,这里要注意 明明已经增加了
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'PV_Moniter.settings')
django.setup()
但,还是报错的原因是因为!!!!在导入models的时候,还没有在django对应的环境下导入
这里导入的顺序很重要
import os
import django
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'PV_Moniter.settings')
django.setup()
from pv_server.models import IVCurvesInfo, FaultType
这样更换导入顺序后,就顺利的解决啦!
来源:https://blog.csdn.net/kkevinyang/article/details/79446744


猜你喜欢
- 在Python中,变量是没有类型的,这和以往看到的大部分编辑语言都不一样。在使用变量的时候,不需要提前声明,只需要给这个变量赋值即可。但是,
- 最近一直在学Vue,这次做了一个简单的在线学生信息录入系统来巩固一下所学知识。因为主要是巩固Vue的知识,所以数据也没放数据库,也没用Jav
- 方法一:同步操作1.pipelines.py文件(处理数据的python文件)import pymysqlclass LvyouPipeli
- 一、mysql主从复制介绍mysql的主从复制并不是数据库磁盘上的文件直接拷贝,而是通过逻辑的binlog日志复制到要同步的服务器本地,然后
- 说明1、Task是Future的子类,Task是对协程的封装,我们把多个Task放在循环调度列表中,等待调度执行。2、Task对象可以跟踪任
- 了解算法之前,我们先看一下什么是算法定义:算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用
- 首先说一下需求,我需要将数据以分钟为单位进行分组,然后每一分钟内的数据作为一行输出,因为不同时间的数据量不一样,所以所有数据按照最长的那组数
- 1.首先定义一个log文件# -*- coding: utf-8 -*-import osimport timeimport logging
- 这样写 <select id="search"> <option>baidu</optio
- 本文实例讲述了Python实现的摇骰子猜大小功能小游戏。分享给大家供大家参考,具体如下:最近学习Python的随机数,逻辑判断,循环的用法,
- 前言:本文的主要内容是介绍Python中的变量命名规则和简单数据类型的应用,简单的数据类型包括字符串和数字等,文中还附有代码以及相应的运行结
- MySQL开启通用查询日志general log mysql打开general log之后,所有的查询语句都可以在general log文件
- 一.需求统计收集各个实例上table的信息,主要是表的记录数及大小。收集的范围是cmdb中所有的数据库实例。二.公共基础文件说明1.配置文件
- 按单字节计算字符串的长度,汉字算两个字节。<script type="text/JavaScript"
- mysql复制表的几种方式 所描述的方法还请实际测试一下再使用.1、复制表结构及数据到新表CREATE TABLE 新表SELEC
- 本文实例讲述了js+php实现静态页面实时调用用户登陆状态的方法。分享给大家供大家参考。具体分析如下:在程序开发中,经常会把页面做成html
- Python 文件自动去重平日里一来无聊,二来手巧,果然下载了好多无(luan)比(qi)珍(ba)贵(zao)的资料,搞得我小小的硬盘(已
- 最近做了一个微信小程序的项目,关于后端给我传递日期的时候,我拿到的是一串数字如:createDate: 1552117531000 ,这是一
- MySQL的MyISAM、InnoDB引擎默认均使用B+树索引(查询时都显示为“BTREE”),本文讨论两个问题:为什么MySQL等主流数据
- PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、Proje