在脚本中单独使用django的ORM模型详解


Posted in Python onApril 01, 2020

有时候在测试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

这样更换导入顺序后,就顺利的解决啦!

以上这篇在脚本中单独使用django的ORM模型详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python多线程编程(二):启动线程的两种方法
Apr 05 Python
Python的Flask框架中使用Flask-Migrate扩展迁移数据库的教程
Jun 14 Python
python爬虫之线程池和进程池功能与用法详解
Aug 02 Python
windows上安装python3教程以及环境变量配置详解
Jul 18 Python
Tensorflow训练MNIST手写数字识别模型
Feb 13 Python
Python使用Excel将数据写入多个sheet
May 16 Python
完美解决keras 读取多个hdf5文件进行训练的问题
Jul 01 Python
详解pytorch中squeeze()和unsqueeze()函数介绍
Sep 03 Python
python实现图片素描效果
Sep 26 Python
用python写一个带有gui界面的密码生成器
Nov 06 Python
如何利用Python写个坦克大战
Nov 18 Python
python解决OpenCV在读取显示图片的时候闪退的问题
Feb 23 Python
Python视频编辑库MoviePy的使用
Apr 01 #Python
python json.dumps中文乱码问题解决
Apr 01 #Python
Django Admin后台添加数据库视图过程解析
Apr 01 #Python
pyqt5中动画的使用详解
Apr 01 #Python
django项目中新增app的2种实现方法
Apr 01 #Python
Django Admin设置应用程序及模型顺序方法详解
Apr 01 #Python
django API 中接口的互相调用实例
Apr 01 #Python
You might like
比较简单实用的PHP无限分类源码分享(思路不错)
2011/10/13 PHP
php如何调用webservice应用介绍
2012/11/24 PHP
PHP中使用json数据格式定义字面量对象的方法
2014/08/20 PHP
PHP @ at 记号的作用示例介绍
2014/10/10 PHP
PHP中soap的用法实例
2014/10/24 PHP
php发送与接收流文件的方法
2015/02/11 PHP
PHP实现验证码校验功能
2017/11/16 PHP
PHP中危险的file_put_contents函数详解
2017/11/04 PHP
TNC vs RR BO3 第一场 2.14
2021/03/10 DOTA
Javascript 继承机制的实现
2009/08/12 Javascript
js函数的延迟加载实现代码
2012/10/11 Javascript
JS中showModalDialog 的使用解析
2013/04/17 Javascript
使用JavaScript 实现对象 匀速/变速运动的方法
2013/05/08 Javascript
json格式的时间显示为正常年月日的方法
2013/09/08 Javascript
JavaScript对象数组排序函数及六个用法
2015/12/23 Javascript
使用jQuery的easydrag插件实现可拖动的DIV弹出框
2016/02/19 Javascript
JavaScript实现分页效果
2017/03/28 Javascript
Angular-UI Bootstrap组件实现警报功能
2018/07/16 Javascript
原生JS实现天气预报
2020/06/16 Javascript
在vue中axios设置timeout超时的操作
2020/09/04 Javascript
js实现随机点名功能
2020/12/23 Javascript
[54:33]2018DOTA2亚洲邀请赛小组赛 A组加赛 Liquid vs Optic
2018/04/03 DOTA
Python使用shelve模块实现简单数据存储的方法
2015/05/20 Python
python实现员工管理系统
2018/01/11 Python
Python使用sax模块解析XML文件示例
2019/04/04 Python
python-opencv获取二值图像轮廓及中心点坐标的代码
2019/08/27 Python
Python实现在Windows平台修改文件属性
2020/03/05 Python
Tiqets英国:智能手机上的文化和娱乐门票
2019/07/10 全球购物
黄河的主人教学反思
2014/02/07 职场文书
幼儿园优秀教师事迹
2014/02/13 职场文书
革命英雄事迹演讲稿
2014/09/13 职场文书
建筑专业毕业生求职信
2014/09/30 职场文书
发展党员工作情况汇报
2014/10/28 职场文书
2016年五四青年节校园广播稿
2015/12/17 职场文书
导游词之塘栖古镇
2019/12/04 职场文书
mysql 子查询的使用
2022/04/28 MySQL