在脚本中单独使用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 相关文章推荐
tornado捕获和处理404错误的方法
Feb 26 Python
基于python socketserver框架全面解析
Sep 21 Python
flask使用session保存登录状态及拦截未登录请求代码
Jan 19 Python
pip install urllib2不能安装的解决方法
Jun 12 Python
widows下安装pycurl并利用pycurl请求https地址的方法
Oct 15 Python
python利用跳板机ssh远程连接redis的方法
Feb 19 Python
Django rstful登陆认证并检查session是否过期代码实例
Aug 13 Python
500行代码使用python写个微信小游戏飞机大战游戏
Oct 16 Python
关于numpy.where()函数 返回值的解释
Dec 06 Python
解决Numpy中sum函数求和结果维度的问题
Dec 06 Python
使用PyOpenGL绘制三维坐标系实例
Dec 24 Python
手把手教你进行Python虚拟环境配置教程
Feb 03 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
改变Apache端口等配置修改方法
2008/06/05 PHP
教大家制作简单的php日历
2015/11/17 PHP
PHP中的密码加密的解决方案总结
2016/10/26 PHP
[原创]php实现数组按拼音顺序排序的方法
2017/05/03 PHP
js动态创建标签示例代码
2014/06/09 Javascript
Bootstrap每天必学之标签与徽章
2015/11/27 Javascript
JavaScript 正则表达式中global模式的特性
2016/02/25 Javascript
基于jQuery Tipso插件实现消息提示框特效
2016/03/16 Javascript
Avalon中文长字符截取、关键字符隐藏、自定义过滤器
2016/05/18 Javascript
EasyUI Pagination 分页的两种做法小结
2016/07/09 Javascript
一个超简单的jQuery回调函数例子(分享)
2016/08/08 Javascript
AngularJS 自定义指令详解及示例代码
2016/08/17 Javascript
Vue 全家桶实现移动端酷狗音乐功能
2018/11/16 Javascript
Node.js动手撸一个静态资源服务器的方法
2019/03/09 Javascript
layui自定义ajax左侧三级菜单
2019/07/26 Javascript
微信小程序实现树莓派(raspberry pi)小车控制
2020/02/12 Javascript
详解Vue之事件处理
2020/07/10 Javascript
Python的Flask框架中集成CKeditor富文本编辑器的教程
2016/06/13 Python
详解Python pygame安装过程笔记
2017/06/05 Python
Python Requests模拟登录实现图书馆座位自动预约
2018/04/27 Python
django.db.utils.ProgrammingError: (1146, u“Table‘’ doesn’t exist”)问题的解决
2018/07/13 Python
Flask框架工厂函数用法实例分析
2019/05/25 Python
pip install python 快速安装模块的教程图解
2019/10/08 Python
Python 网络编程之UDP发送接收数据功能示例【基于socket套接字】
2019/10/11 Python
python游戏开发的五个案例分享
2020/03/09 Python
在keras中model.fit_generator()和model.fit()的区别说明
2020/06/17 Python
Python pathlib模块使用方法及实例解析
2020/10/05 Python
html5中使用hotcss.js实现手机端自适配的方法
2020/04/23 HTML / CSS
银行求职推荐信范文
2013/11/30 职场文书
校园之星获奖感言
2014/01/29 职场文书
会计电算化应届生自荐信
2014/02/25 职场文书
同学聚会策划方案
2014/06/06 职场文书
2015年体育教学工作总结
2015/05/20 职场文书
煤矿隐患排查制度
2015/08/05 职场文书
OpenCV实现普通阈值
2021/11/17 Java/Android
Python列表的索引与切片
2022/04/07 Python