在脚本中单独使用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 ConfigParser库轻松读写INI文件实例探究

    Python ConfigParser库轻松读写INI文件实例探究

    这篇文章主要为大家介绍了Python ConfigParser库轻松读写INI文件实例探究,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • Python安装教程全过程(2022最新)

    Python安装教程全过程(2022最新)

    这篇文章主要介绍了Python安装教程全过程(2022最新版本),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • python使用pil进行图像处理(等比例压缩、裁剪)实例代码

    python使用pil进行图像处理(等比例压缩、裁剪)实例代码

    这篇文章主要介绍了python使用pil进行图像处理(等比例压缩、裁剪)实例代码,首先介绍了pil的相关内容,然后分享了实例代码,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12
  • Python元组Tuple常用函数详解

    Python元组Tuple常用函数详解

    Python元组Tuple使用小括号()包裹,元素之间使用逗号,间隔,元组与列表相似,但元组的元素不可变,本文就给大家详细介绍一下元组的常用函数以及基本操作,感兴趣的朋友可以参考阅读下
    2023-07-07
  • 详解Python中datetime库的使用

    详解Python中datetime库的使用

    这篇文章主要介绍了Python中datetime库的使用,它提供了一系列由简单到复杂的时间处理方法。datetime 库可以从系统中获得时间,并以用户选择的格式输出,需要的朋友可以参考下
    2023-04-04
  • 浅析python打包工具distutils、setuptools

    浅析python打包工具distutils、setuptools

    python包在开发中十分常见,一般的使用套路是所有的功能做一个python模块包,打包模块,然后发布,安装使用。这篇文章给大家介绍了python打包工具distutils、setuptools的相关知识,感兴趣的朋友一起看看吧
    2018-04-04
  • python中django框架通过正则搜索页面上email地址的方法

    python中django框架通过正则搜索页面上email地址的方法

    这篇文章主要介绍了python中django框架通过正则搜索页面上email地址的方法,涉及django框架及正则表达式的使用技巧,需要的朋友可以参考下
    2015-03-03
  • python实现远程控制电脑

    python实现远程控制电脑

    这篇文章主要为大家详细介绍了python实现远程控制电脑,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-05-05
  • CentOS 安装 Python 3.11.9完整步骤

    CentOS 安装 Python 3.11.9完整步骤

    在CentOS上安装Python3.11.9并替换系统默认Python版本的步骤,包括安装依赖、下载解压源码、编译安装、更新默认版本、验证安装,并提供注意事项和创建虚拟环境的建议,本文分步骤给大家介绍的非常详细,感兴趣的朋友一起看看吧
    2024-11-11
  • Python 列表和字典常踩坑即解决方案

    Python 列表和字典常踩坑即解决方案

    这篇文章介绍了 Python 列表和字典常踩坑即解决方案,主要针对python列表和字典得一些问题,提出了多种解决方案。需要的小伙伴可以参考一下
    2022-05-05

最新评论