在脚本中单独使用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修改MP3文件的方法
Jun 15 Python
使用Python爬了4400条淘宝商品数据,竟发现了这些“潜规则”
Mar 23 Python
python 异或加密字符串的实例
Oct 14 Python
Python实现繁?转为简体的方法示例
Dec 18 Python
python mac下安装虚拟环境的图文教程
Apr 12 Python
Python音频操作工具PyAudio上手教程详解
Jun 26 Python
Python2比较当前图片跟图库哪个图片相似的方法示例
Sep 28 Python
python_mask_array的用法
Feb 18 Python
python openCV自制绘画板
Oct 27 Python
OpenCV+python实现膨胀和腐蚀的示例
Dec 21 Python
python 进制转换 int、bin、oct、hex的原理
Jan 13 Python
opencv-python图像配准(匹配和叠加)的实现
Jun 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
收音机鉴频器对声音的影响和频偏分析
2021/03/02 无线电
php文章内容分页并生成相应的htm静态页面代码
2010/06/07 PHP
PHP pathinfo()获得文件的路径、名称等信息说明
2011/09/13 PHP
PHP下的浮点运算不准的解决方法
2016/10/27 PHP
php set_include_path函数设置 include_path 配置选项
2016/10/30 PHP
php实现统计二进制中1的个数算法示例
2018/01/23 PHP
php设计模式之中介者模式分析【星际争霸游戏案例】
2020/03/23 PHP
Javascript WebSocket使用实例介绍(简明入门教程)
2014/04/16 Javascript
深入理解JQuery循环绑定事件
2016/06/02 Javascript
JS使用正则表达式过滤多个词语并替换为相同长度星号的方法
2016/08/03 Javascript
js手动播放图片实现图片轮播效果
2016/09/17 Javascript
jQuery旋转插件jqueryrotate用法详解
2016/10/13 Javascript
Nodejs下用submit提交表单提示cannot post错误的解决方法
2016/11/21 NodeJs
canvas滤镜效果实现代码
2017/02/06 Javascript
详解vue2.0组件通信各种情况总结与实例分析
2017/03/22 Javascript
Form表单上传文件(type="file")的使用
2017/08/03 Javascript
Vue-Router模式和钩子的用法
2018/02/28 Javascript
在Vue组件中使用 TypeScript的方法
2018/02/28 Javascript
基于vue v-for 循环复选框-默认勾选第一个的实现方法
2018/03/03 Javascript
Javascript 实现 Excel 导入生成图表功能
2018/10/22 Javascript
浅谈目前可以使用ES10的5个新特性
2019/06/25 Javascript
vue实现表格过滤功能
2019/09/27 Javascript
vue利用全局导航守卫作登录后跳转到未登录前指定页面的实例代码
2020/05/19 Javascript
el-table表头根据内容自适应完美解决表头错位和固定列错位
2021/01/07 Javascript
简单介绍Python中利用生成器实现的并发编程
2015/05/04 Python
python数据批量写入ScrolledText的优化方法
2018/10/11 Python
python实现祝福弹窗效果
2019/04/07 Python
10招!看骨灰级Pythoner玩转Python的方法
2019/04/15 Python
pyqt5 获取显示器的分辨率的方法
2019/06/18 Python
用Cython加速Python到“起飞”(推荐)
2019/08/01 Python
PyQT5 emit 和 connect的用法详解
2019/12/13 Python
FitFlop美国官网:英国符合人体工学的鞋类品牌
2018/10/05 全球购物
什么时候需要进行强制类型转换
2016/09/03 面试题
人力资源管理专业应届生求职信
2013/09/28 职场文书
测试工程师程序员求职信范文
2014/02/20 职场文书
郭明义电影观后感
2015/06/08 职场文书