在脚本中单独使用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实现高效求解素数代码实例
Jun 30 Python
Python多继承原理与用法示例
Aug 23 Python
python远程邮件控制电脑升级版
May 23 Python
Django使用Jinja2模板引擎的示例代码
Aug 09 Python
python RC4加密操作示例【测试可用】
Sep 26 Python
wxPython:python首选的GUI库实例分享
Oct 05 Python
OpenCV模板匹配matchTemplate的实现
Oct 18 Python
mac使用python识别图形验证码功能
Jan 10 Python
Python使用py2neo操作图数据库neo4j的方法详解
Jan 13 Python
python利用datetime模块计算程序运行时间问题
Feb 20 Python
Python就将所有的英文单词首字母变成大写
Feb 12 Python
pytorch加载预训练模型与自己模型不匹配的解决方案
May 13 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
让你的WINDOWS同时支持MYSQL4,MYSQL4.1,MYSQL5X
2006/12/06 PHP
浅谈php中的循环while、do...while、for、foreach四种循环
2016/11/05 PHP
Yii框架弹出窗口组件CJuiDialog用法分析
2017/01/07 PHP
JavaScript 直接操作本地文件的实现代码
2009/12/01 Javascript
单独使用CKFinder选择图片的方法
2010/08/21 Javascript
js 去掉空格实例 Trim() LTrim() RTrim()
2014/01/07 Javascript
js获取页面传来参数的方法
2014/09/06 Javascript
详解JavaScript ES6中的Generator
2015/07/28 Javascript
AngularJS入门教程之Select(选择框)详解
2016/07/27 Javascript
详解react使用react-bootstrap当轮子造车
2017/08/15 Javascript
JavaScript学习笔记之惰性函数示例详解
2017/08/27 Javascript
JavaScript实现为事件句柄绑定监听函数的方法分析
2017/11/14 Javascript
js合并两个数组生成合并后的key:value数组
2018/05/09 Javascript
轻松学习JavaScript函数中的 Rest 参数
2019/05/30 Javascript
[37:29]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第二场 11.19
2020/11/19 DOTA
python+mongodb数据抓取详细介绍
2017/10/25 Python
python实现BackPropagation算法
2017/12/14 Python
python 实现数组list 添加、修改、删除的方法
2018/04/04 Python
Python从单元素字典中获取key和value的实例
2018/12/31 Python
用python给自己做一款小说阅读器过程详解
2019/07/11 Python
python dataframe NaN处理方式
2019/12/26 Python
Python装饰器如何实现修复过程解析
2020/09/05 Python
python如何停止递归
2020/09/09 Python
Selenium获取登录Cookies并添加Cookies自动登录的方法
2020/12/04 Python
出门问问全球官方商城:Tichome音箱和TicWatch智能手表
2017/12/02 全球购物
化石印度尼西亚在线商店:Fossil Indonesia
2019/03/11 全球购物
澳大利亚有机化妆品网上商店:The Well Store
2020/02/20 全球购物
材料会计岗位职责
2014/03/06 职场文书
施工单位安全责任书
2014/07/24 职场文书
购房协议书范本
2014/10/02 职场文书
民主评议党员工作总结
2014/10/20 职场文书
离婚起诉书范文2016
2015/11/26 职场文书
接触艺术对孩子学习思维有益
2019/08/06 职场文书
python 调用js的四种方式
2021/04/11 Python
Python实战之大鱼吃小鱼游戏的实现
2022/04/01 Python
Python中np.random.randint()参数详解及用法实例
2022/09/23 Python