在脚本中单独使用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 相关文章推荐
用smtplib和email封装python发送邮件模块类分享
Feb 17 Python
python命令行参数解析OptionParser类用法实例
Oct 09 Python
Python中实现参数类型检查的简单方法
Apr 21 Python
Python实现获取磁盘剩余空间的2种方法
Jun 07 Python
Python与R语言的简要对比
Nov 14 Python
对Python通过pypyodbc访问Access数据库的方法详解
Oct 27 Python
浅谈Django2.0 加xadmin踩的坑
Nov 15 Python
基于python3生成标签云代码解析
Feb 18 Python
django ObjectDoesNotExist 和 DoesNotExist的用法
Jul 09 Python
python 实现socket服务端并发的四种方式
Dec 14 Python
pytest进阶教程之fixture函数详解
Mar 29 Python
解决pycharm下载库时出现Failed to install package的问题
Sep 04 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 simple_html_dom.php+正则 采集文章代码
2009/12/24 PHP
php遍历数组的4种方法总结
2014/07/05 PHP
Laravel路由设定和子路由设定实例分析
2016/03/30 PHP
人脸识别测颜值、测脸龄、测相似度微信接口
2016/04/07 PHP
JS动态加载当前时间的方法
2015/02/09 Javascript
js+html5获取用户地理位置信息并在Google地图上显示的方法
2015/06/05 Javascript
JS实现统计复选框选中个数并提示确定与取消的方法
2015/07/01 Javascript
jquery实现顶部向右伸缩的导航区域代码
2015/09/02 Javascript
js实现随屏幕滚动的带缓冲效果的右下角广告代码
2015/09/04 Javascript
AngularJs表单验证实例详解
2016/05/30 Javascript
JavaScript计算器网页版实现代码分享
2016/07/15 Javascript
Iphone手机、安卓手机浏览器控制默认缩放大小的方法总结(附代码)
2017/08/18 Javascript
详谈构造函数加括号与不加括号的区别
2017/10/26 Javascript
VSCode launch.json配置详细教程
2020/06/18 Javascript
ant design vue datepicker日期选择器中文化操作
2020/10/28 Javascript
python3操作mysql数据库的方法
2017/06/23 Python
python MySQLdb使用教程详解
2018/03/20 Python
Python3实现爬取指定百度贴吧页面并保存页面数据生成本地文档的方法
2018/04/22 Python
python生成带有表格的图片实例
2019/02/03 Python
wxPython实现文本框基础组件
2019/11/18 Python
pytorch-神经网络拟合曲线实例
2020/01/15 Python
HTML5 device access 设备访问详解
2018/05/24 HTML / CSS
HTML块级标签汇总(小篇)
2016/07/13 HTML / CSS
HTML5头部标签的一些常用信息小结
2016/10/23 HTML / CSS
美国网上书店:Barnes & Noble
2018/08/15 全球购物
英国绿色商店:Natural Collection
2019/05/03 全球购物
Footshop乌克兰:运动鞋的最大选择
2019/12/01 全球购物
.NET初级开发工程师面试题
2014/04/18 面试题
工程招投标邀请书
2014/01/26 职场文书
寒假社会实践个人总结
2015/03/06 职场文书
合作意向书怎么写
2019/06/24 职场文书
创业计划书之酒厂
2019/10/14 职场文书
解决Nginx 配置 proxy_pass 后 返回404问题
2021/03/31 Servers
CSS3 制作的书本翻页特效
2021/04/13 HTML / CSS
零基础学java之方法的定义与调用详解
2022/04/10 Java/Android
Java实现超大Excel文件解析(XSSF,SXSSF,easyExcel)
2022/07/15 Java/Android