在脚本中单独使用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系列之浅谈pickle模块封装和拆封数据对象的方法
May 23 Python
windows下python安装小白入门教程
Sep 18 Python
详解Python中的内建函数,可迭代对象,迭代器
Apr 29 Python
python networkx 包绘制复杂网络关系图的实现
Jul 10 Python
Python列表原理与用法详解【创建、元素增加、删除、访问、计数、切片、遍历等】
Oct 30 Python
Python实现隐马尔可夫模型的前向后向算法的示例代码
Dec 31 Python
keras 回调函数Callbacks 断点ModelCheckpoint教程
Jun 18 Python
解决Keras的自定义lambda层去reshape张量时model保存出错问题
Jul 01 Python
Python暴力破解Mysql数据的示例
Nov 09 Python
使用sublime text3搭建Python编辑环境的实现
Jan 12 Python
python利用opencv实现颜色检测
Feb 23 Python
解决Pytorch半精度浮点型网络训练的问题
May 24 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禁止直接从浏览器输入地址访问.php文件的方法
2014/11/04 PHP
php中 ob_start等函数截取标准输出的方法
2015/06/22 PHP
yii2控制器Controller Ajax操作示例
2016/07/23 PHP
phpinfo无法显示的原因及解决办法
2019/02/15 PHP
javascript 学习之旅 (3)
2009/02/05 Javascript
jquery动态改变onclick属性导致失效的问题解决方法
2013/12/04 Javascript
ExtJS4 表格的嵌套 rowExpander应用
2014/05/02 Javascript
理解JavaScript的变量的入门教程
2015/07/07 Javascript
JavaScript中的this引用(推荐)
2016/08/05 Javascript
数组Array的排序sort方法
2017/02/17 Javascript
js转换对象为xml
2017/02/17 Javascript
Vue表单验证插件Vue Validator使用方法详解
2017/04/07 Javascript
vue引入jq插件的实例讲解
2017/09/12 Javascript
vue+node+webpack环境搭建教程
2017/11/05 Javascript
关于Vue在ie10下空白页的debug小结
2018/05/02 Javascript
利用原生的JavaScript实现简单拼图游戏
2018/11/18 Javascript
Vue+ElementUI使用vue-pdf实现预览功能
2019/11/26 Javascript
简单的Python的curses库使用教程
2015/04/11 Python
python访问系统环境变量的方法
2015/04/29 Python
python3读取MySQL-Front的MYSQL密码
2017/05/03 Python
python 获取文件下所有文件或目录os.walk()的实例
2018/04/23 Python
pycharm 主题theme设置调整仿sublime的方法
2018/05/23 Python
Python3爬虫学习之应对网站反爬虫机制的方法分析
2018/12/12 Python
Django中多种重定向方法使用详解
2019/07/17 Python
css3新单位vw、vh的使用教程
2018/03/23 HTML / CSS
Melijoe英国官网:法国儿童时尚网站
2016/11/18 全球购物
三陽商会官方网站:Sanyo iStore
2019/05/15 全球购物
什么是虚拟内存?虚拟内存有什么优势?
2016/02/09 面试题
会计实习自我鉴定
2013/12/04 职场文书
新浪微博实习心得体会
2014/01/27 职场文书
培训班开班仪式主持词
2014/03/28 职场文书
八一建军节演讲稿
2014/09/10 职场文书
2014年纪委工作总结
2014/12/05 职场文书
小学英语复习计划
2015/01/19 职场文书
保护校园环境倡议书
2015/04/28 职场文书
详细聊聊Oracle表碎片对性能有多大的影响
2022/03/19 Oracle