在脚本中单独使用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 相关文章推荐
pycharm 使用心得(九)解决No Python interpreter selected的问题
Jun 06 Python
python网络编程学习笔记(10):webpy框架
Jun 09 Python
python实现2048小游戏
Mar 30 Python
Python实现的人工神经网络算法示例【基于反向传播算法】
Nov 11 Python
Python学习pygal绘制线图代码分享
Dec 09 Python
解析Python中的eval()、exec()及其相关函数
Dec 20 Python
python实现任意位置文件分割的实例
Dec 14 Python
利用Pyhton中的requests包进行网页访问测试的方法
Dec 26 Python
Python图像处理之图像的读取、显示与保存操作【测试可用】
Jan 04 Python
Python中常用的内置方法
Jan 28 Python
使用卷积神经网络(CNN)做人脸识别的示例代码
Mar 27 Python
15个应该掌握的Jupyter Notebook使用技巧(小结)
Sep 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 curl请求信息和返回信息设置代码实例
2015/04/27 PHP
从刷票了解获得客户端IP的方法
2015/09/21 PHP
php利用smtp类实现电子邮件发送
2015/10/30 PHP
超详细的php用户注册页面填写信息完整实例(附源码)
2015/11/17 PHP
PHP实现的回溯算法示例
2017/08/15 PHP
php压缩文件夹最新版
2018/07/18 PHP
laravel框架上传图片实现实时预览功能
2019/10/14 PHP
js与jquery获取父级元素,子级元素,兄弟元素的实现方法
2014/01/09 Javascript
javascript计算当月剩余天数(天数计算器)示例代码
2014/01/09 Javascript
javascript setinterval 的正确语法如何书写
2014/06/17 Javascript
谈谈JS中常遇到的浏览器兼容问题和解决方法
2016/12/17 Javascript
JS奇技之利用scroll来监听resize详解
2017/06/15 Javascript
JavaScript函数中的this四种绑定形式
2017/08/15 Javascript
11行JS代码制作二维码生成功能
2018/03/09 Javascript
create-react-app 修改为多入口编译的方法
2018/08/01 Javascript
中高级前端必须了解的JS中的内存管理(推荐)
2019/07/04 Javascript
vue keep-alive实现多组件嵌套中个别组件存活不销毁的操作
2020/10/30 Javascript
使用python爬虫实现网络股票信息爬取的demo
2018/01/05 Python
django中send_mail功能实现详解
2018/02/06 Python
浅谈Django中的数据库模型类-models.py(一对一的关系)
2018/05/30 Python
WIn10+Anaconda环境下安装PyTorch(避坑指南)
2019/01/30 Python
关于pytorch多GPU训练实例与性能对比分析
2019/08/19 Python
Pycharm Git 设置方法
2020/09/15 Python
Python实现王者荣耀自动刷金币的完整步骤
2021/01/22 Python
浅谈css3新单位vw、vh、vmin、vmax的使用详解
2017/12/01 HTML / CSS
5分钟弄清楚html5的drag and drop(小结)
2019/04/10 HTML / CSS
英国著名书店:Foyles
2018/12/01 全球购物
物流专业大学生的自我鉴定
2013/11/13 职场文书
体育教育专业毕业生自荐信
2013/11/15 职场文书
大学生求职自荐信
2013/12/12 职场文书
物理力学求职信
2014/02/18 职场文书
ktv筹备计划书
2014/05/03 职场文书
新教师岗前培训方案
2014/06/05 职场文书
市场策划求职信
2014/08/07 职场文书
计划生育证明格式及范本
2014/10/09 职场文书
中国梦宣传标语口号
2015/12/26 职场文书