在脚本中单独使用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实现带错误处理功能的远程文件读取方法
Apr 29 Python
Python中的super()方法使用简介
Aug 14 Python
python九九乘法表的实例
Sep 26 Python
Django后台获取前端post上传的文件方法
May 28 Python
基于wxPython的GUI实现输入对话框(1)
Feb 27 Python
python中对数据进行各种排序的方法
Jul 02 Python
Python中一个for循环循环多个变量的示例
Jul 16 Python
flask/django 动态查询表结构相同表名不同数据的Model实现方法
Aug 29 Python
Python3离线安装Requests模块问题
Oct 13 Python
使用 PyTorch 实现 MLP 并在 MNIST 数据集上验证方式
Jan 08 Python
用Python绘制漫步图实例讲解
Feb 26 Python
Python集成开发工具Pycharm的安装和使用详解
Mar 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
在线增减.htpasswd内的用户
2006/10/09 PHP
PHP下一个非常全面获取图象信息的函数
2008/11/20 PHP
PHP+redis实现的悲观锁机制示例
2018/06/12 PHP
Laravel 对某一列进行筛选然后求和sum()的例子
2019/10/10 PHP
setInterval 和 setTimeout会产生内存溢出
2008/02/15 Javascript
拖动布局之保存布局页面cookies篇
2010/10/29 Javascript
JQuery live函数
2010/12/24 Javascript
Jquery Ajax请求代码(2)
2011/01/07 Javascript
JavaScript与Image加载事件(onload)、加载状态(complete)
2011/02/14 Javascript
jQuery事件 delegate()使用方法介绍
2012/10/30 Javascript
jquery通过select列表选择框对表格数据进行过滤示例
2014/05/07 Javascript
jquery中 $.expr使用实例介绍
2014/06/09 Javascript
JavaScript让Textarea支持tab按键的方法
2015/06/26 Javascript
在for循环中length值是否需要缓存
2015/07/27 Javascript
JavaScript知识点总结(十)之this关键字
2016/05/31 Javascript
JavaScript实现解析INI文件内容的方法
2016/11/17 Javascript
微信小程序实现弹出菜单动画
2019/06/21 Javascript
[02:36]DOTA2英雄基础教程 帕格纳
2014/01/20 DOTA
Python3基础之list列表实例解析
2014/08/13 Python
django轻松使用富文本编辑器CKEditor的方法
2017/03/30 Python
matplotlib.pyplot画图 图片的二进制流的获取方法
2018/05/24 Python
详解python中index()、find()方法
2019/08/29 Python
Python Django2.0集成Celery4.1教程
2019/11/19 Python
python 伯努利分布详解
2020/02/25 Python
python实现遍历文件夹图片并重命名
2020/03/23 Python
python爬取微博评论的实例讲解
2021/01/15 Python
10分钟入门CSS3 Animation
2018/12/25 HTML / CSS
日本索尼音乐商店:Sony Music Shop
2018/07/17 全球购物
英国空调、除湿机和通风设备排名第一:Air Con Centre
2019/02/25 全球购物
工商管理应届生求职信
2013/10/07 职场文书
2014年民警工作总结
2014/11/25 职场文书
护士自荐信范文
2015/03/25 职场文书
证婚人婚礼致辞
2015/07/28 职场文书
CSS3通过var()和calc()函数实现动画特效
2021/03/30 HTML / CSS
Vue实现下拉加载更多
2021/05/09 Vue.js
Html5大屏数据可视化开发的实现
2021/06/11 HTML / CSS