在脚本中单独使用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采用socket模拟TCP通讯的实现方法
Nov 19 Python
python读取TXT到数组及列表去重后按原来顺序排序的方法
Jun 26 Python
Python实现曲线点抽稀算法的示例
Oct 12 Python
Django重装mysql后启动报错:No module named ‘MySQLdb’的解决方法
Apr 22 Python
Python使用一行代码获取上个月是几月
Aug 30 Python
对Python中创建进程的两种方式以及进程池详解
Jan 14 Python
对python:循环定义多个变量的实例详解
Jan 20 Python
10个python3常用排序算法详细说明与实例(快速排序,冒泡排序,桶排序,基数排序,堆排序,希尔排序,归并排序,计数排序)
Mar 17 Python
如何理解python面向对象编程
Jun 01 Python
浅谈Selenium 控制浏览器的常用方法
Dec 04 Python
Python爬虫之爬取某文库文档数据
Apr 21 Python
详解分布式系统中如何用python实现Paxos
May 18 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 MySQL 之间的关系
2009/07/17 PHP
纯php打造的tab选项卡效果代码(不用js)
2010/12/29 PHP
PHP中file_exists与is_file,is_dir的区别介绍
2012/09/12 PHP
Zend Framework入门应用实例详解
2016/12/11 PHP
基于jquery的超简单上下翻
2010/04/20 Javascript
Js setInterval与setTimeout(定时执行与循环执行)的代码(可以传入参数)
2010/06/11 Javascript
基于jquery的loading效果实现代码
2010/11/05 Javascript
cookie的复制与使用记住用户名实现代码
2013/11/04 Javascript
在页面加载完成后通过jquery给多个span赋值
2014/05/21 Javascript
JQuery实现鼠标移动图片显示描述层的方法
2015/06/25 Javascript
JQuery实现左右滚动菜单特效
2015/09/28 Javascript
漂亮! js实现颜色渐变效果
2016/08/12 Javascript
Javascript实现前端简单的路由实例
2016/09/11 Javascript
JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)
2016/12/14 Javascript
ES6学习笔记之正则表达式和字符串正则方法分析
2017/04/25 Javascript
DataTables添加额外的查询参数和删除columns等无用参数实例
2017/07/04 Javascript
Vue-component全局注册实例
2018/09/06 Javascript
Vue开发之封装上传文件组件与用法示例
2019/04/25 Javascript
更强大的vue ssr实现预取数据的方式
2019/07/19 Javascript
vue-drag-chart 拖动/缩放图表组件的实例代码
2020/04/10 Javascript
Pycharm之快速定位到某行快捷键的方法
2019/01/20 Python
使用Python3+PyQT5+Pyserial 实现简单的串口工具方法
2019/02/13 Python
详解python做UI界面的方法
2019/02/27 Python
感知器基础原理及python实现过程详解
2019/09/30 Python
使用PyTorch将文件夹下的图片分为训练集和验证集实例
2020/01/08 Python
flask框架url与重定向操作实例详解
2020/01/25 Python
python输出pdf文档的实例
2020/02/13 Python
HomeAway英国:全球领先的度假租赁在线市场
2020/02/03 全球购物
大二学生学习个人自我评价
2014/01/19 职场文书
尽职尽责村干部自我鉴定
2014/01/23 职场文书
创先争优个人承诺书
2014/08/30 职场文书
护士求职自荐信
2015/03/25 职场文书
2016教师节感恩话语
2015/12/09 职场文书
css3应用示例:新增的选择器
2022/03/16 HTML / CSS
Pytorch中使用ImageFolder读取数据集时忽略特定文件
2022/03/23 Python
Redis过期数据是否会被立马删除
2022/07/23 Redis