在脚本中单独使用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 随机生成中文验证码的实例代码
Mar 20 Python
python实现网页链接提取的方法分享
Feb 25 Python
使用Python的PEAK来适配协议的教程
Apr 14 Python
使用Python的Treq on Twisted来进行HTTP压力测试
Apr 16 Python
在Django的视图中使用数据库查询的方法
Jul 16 Python
python+numpy+matplotalib实现梯度下降法
Aug 31 Python
在Python dataframe中出生日期转化为年龄的实现方法
Oct 20 Python
Python中print和return的作用及区别解析
May 05 Python
Python操作列表常用方法实例小结【创建、遍历、统计、切片等】
Oct 25 Python
python找出列表中大于某个阈值的数据段示例
Nov 24 Python
python中sympy库求常微分方程的用法
Apr 28 Python
pycharm设置默认的UTF-8编码模式的方法详解
Jun 01 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
javascript实现的listview效果
2007/04/28 Javascript
JS 自动安装exe程序
2008/11/30 Javascript
JS代码优化技巧之通俗版(减少js体积)
2011/12/23 Javascript
javascript放大镜效果的简单实现
2013/12/09 Javascript
JavaScript阻止事件冒泡示例分享
2014/12/28 Javascript
JavaScript知识点整理
2015/12/09 Javascript
vue.js入门教程之绑定class和style样式
2016/09/02 Javascript
Bootstrap select实现下拉框多选效果
2016/12/23 Javascript
详解Vue2.0里过滤器容易踩到的坑
2017/06/01 Javascript
vue router demo详解
2017/10/13 Javascript
JQuery事件委托原理与用法实例分析
2019/05/13 jQuery
ckeditor一键排版功能实现方法分析
2020/02/06 Javascript
jQuery实现带进度条的轮播图
2020/09/13 jQuery
数据挖掘之Apriori算法详解和Python实现代码分享
2014/11/07 Python
python计算N天之后日期的方法
2015/03/31 Python
Python 中开发pattern的string模板(template) 实例详解
2017/04/01 Python
对python中的xlsxwriter库简单分析
2018/05/04 Python
使用Flask-Cache缓存实现给Flask提速的方法详解
2019/06/11 Python
django 多数据库及分库实现方式
2020/04/01 Python
Python基础类继承重写实现原理解析
2020/04/03 Python
python线程池如何使用
2020/05/28 Python
Python如何实现大型数组运算(使用NumPy)
2020/07/24 Python
matplotlib.pyplot.plot()参数使用详解
2020/07/28 Python
理解Django 中Call Stack机制的小Demo
2020/09/01 Python
python 实现汉诺塔游戏
2020/11/28 Python
澳大利亚优质葡萄酒专家:Vintage Cellars
2019/01/08 全球购物
美国眼镜网站:LensCrafters
2020/01/19 全球购物
构造器Constructor是否可被override?
2013/08/06 面试题
重写子类方法时,抛出异常的书写注意事项
2015/10/17 面试题
银行会计业务的个人自我评价
2013/11/02 职场文书
《小猪家的桃花树》教学反思
2014/04/11 职场文书
2015年六一儿童节活动总结
2015/02/11 职场文书
企业宣传语大全
2015/07/13 职场文书
Python实现DBSCAN聚类算法并样例测试
2021/06/22 Python
使用Python解决图表与画布的间距问题
2022/04/11 Python
Golang Elasticsearches 批量修改查询及发送MQ
2022/04/19 Golang