在脚本中单独使用django的ORM模型详解

 更新时间:2020年04月01日 15:29:54   作者:kkevinyang  
这篇文章主要介绍了在脚本中单独使用django的ORM模型详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

有时候在测试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数据分析之如何利用pandas查询数据示例代码

    Python数据分析之如何利用pandas查询数据示例代码

    查询和分析数据是pandas的重要功能,也是我们学习pandas的基础,下面这篇文章主要给大家介绍了关于Python数据分析之如何利用pandas查询数据的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-09-09
  • Python金融数据可视化汇总

    Python金融数据可视化汇总

    这篇文章主要介绍了Python金融数据可视化(两列数据的提取,分别画,双坐标轴,双图,两种不同的图)等内容。
    2017-11-11
  • Django --Xadmin 判断登录者身份实例

    Django --Xadmin 判断登录者身份实例

    这篇文章主要介绍了Django --Xadmin 判断登录者身份实例,具有很好的参考价值,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • 解决python使用list()时总是报错的问题

    解决python使用list()时总是报错的问题

    这篇文章主要介绍了解决python使用list()时总是报错的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • Python+wxPython实现自动生成PPTX文档程序

    Python+wxPython实现自动生成PPTX文档程序

    这篇文章主要介绍了如何使用 wxPython 模块和 python-pptx 模块来编写一个程序,用于生成包含首页、内容页和感谢页的 PPTX 文档,感兴趣的小伙伴可以学习一下
    2023-08-08
  • 快速部署 Scrapy项目scrapyd的详细流程

    快速部署 Scrapy项目scrapyd的详细流程

    这篇文章主要介绍了快速部署 Scrapy项目scrapyd的详细流程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-09-09
  • Pycharm连接远程服务器并远程调试的全过程

    Pycharm连接远程服务器并远程调试的全过程

    PyCharm 是 JetBrains 开发的一款 Python 跨平台编辑器,下面这篇文章主要介绍了Pycharm连接远程服务器并远程调试的全过程,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2021-06-06
  • Python实现带图形界面的炸金花游戏(升级版)

    Python实现带图形界面的炸金花游戏(升级版)

    诈金花又叫三张牌,是在全国广泛流传的一种民间多人纸牌游戏,它具有独特的比牌规则。本文将通过Python语言实现升级版的带图形界面的诈金花游戏,需要的可以参考一下
    2022-12-12
  • Python小白必备的8个最常用的内置函数(推荐)

    Python小白必备的8个最常用的内置函数(推荐)

    这篇文章主要介绍了Python常用的内置函数,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • 使用pytorch加载并读取COCO数据集的详细操作

    使用pytorch加载并读取COCO数据集的详细操作

    这篇文章主要介绍了使用pytorch加载并读取COCO数据集,基础知识包括元祖、字典、数组,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05

最新评论