本文首发于公众号:Hunter后端

原文链接:Django笔记四十之运行Django环境的python脚本

这一篇笔记介绍如何在 Django 中运行脚本。

假设说我们要实现一个功能,需要获取 blog.models.Blog 这张表里的总数且使用 print() 输出。

如果代码逻辑很短,且是一次性执行的操作,我们可以在系统的根目录下使用 python3 manage.py shell 在 shell 中操作实现。

from blog.models import Blog
print(Blog.objects.all().count())

但是如果这个需求是一个很长的逻辑,且需要可以重复执行,那么应该如何操作呢?

首先,我们需要可以用到 Django 里的 Blog model,然后使用 model 的方式来进行查询。

我们可以将其写入一个文件,每次都使用 shell 来调用。

写入文件,在 shell 调用

比如,我们可以在 blog 创建一个 scripts 文件夹,然后创建一个 blog_script.py 文件:

# blog/scripts/blog_script.py

from blog.models import Blog

def get_blog_count():
print(Blog.objects.all().count())

然后每次调用的时候就进入 python3 manage.py shell 操作:

from blog.scripts.blog_script import get_blog_count

get_blog_count()

直接运行脚本

如果我们想创建一个文件,然后直接运行该脚本,那么就需要在脚本中引入当前 Django 系统环境的一些参数和变量,可以直接在系统根目录下创建一个 blog_script.py 文件:

# blog_script.py

import django, os

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "hunter.settings")
django.setup() from blog.models import Blog if __name__ == "__main__":
print(Blog.objects.count())

然后我们在系统根目录下直接执行该脚本:

python3 blog_script.py

这个文件目前只有放在系统的根目录下才可以运行,但是如果太多的脚本都放到系统根目录下也不太好,所以我们如果有这种脚本一般都可以放到对应的 application 的 scripts 文件夹下。

如果我们想要直接在 blog/scripts/ 下直接运行该脚本的话,则需要在我们的脚本中添加 Django 系统的路径,假设我们的 Django 系统名为 hunter,在服务器的路径为:/Users/xxxx/hunter/,我们可以如下操作:

# blog/scripts/

import django, os, sys

django_path = "/Users/xxxx/hunter/"
sys.path.extend([django_path])
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "hunter.settings") django.setup() from blog.models import Blog if __name__ == "__main__":
print(Blog.objects.count())

如果想获取更多后端相关文章,可扫码关注阅读:

Django笔记四十之运行Django环境的python脚本的更多相关文章

  1. Django笔记二十四之数据库函数之比较和转换函数

    本文首发于公众号:Hunter后端 原文链接:Django笔记二十四之数据库函数之比较和转换函数 这一篇笔记开始介绍几种数据库函数,以下是几种函数及其作用 Cast 转换类型 Coalesce 优先取 ...

  2. Django笔记二十八之数据库查询优化汇总

    本文首发于公众号:Hunter后端 原文链接:Django笔记二十八之数据库查询优化汇总 这一篇笔记将从以下几个方面来介绍 Django 在查询过程中的一些优化操作,有一些是介绍如何获取 Django ...

  3. Django笔记三十之log日志记录详解

    本文首发于公众号:Hunter后端 原文链接:Django笔记三十之log日志的记录详解 这一节介绍在 Django 系统里使用 logging 记录日志 以下是一个简单的 logging 模块示例, ...

  4. Django笔记四之字段属性

    这篇笔记介绍的 field options,也就是 字段的选项属性. 首先,关于 model,是数据库与 python 代码里的一个映射关系,每一个 model 是django.db.models.M ...

  5. Django笔记二十之手动编写migration文件

    本文首发于公众号:Hunter后端 原文链接:Django笔记二十之手动编写migration文件 前面介绍过,migration 文件主要记录的是 Django 系统 model 的变化,然后通过 ...

  6. Django笔记二十二之多数据库操作

    本文首发于公众号:Hunter后端 原文链接:Django笔记二十二之多数据库操作 这一篇笔记介绍一下多数据库操作. 在第十篇笔记的时候,简单介绍过 using() 的使用方法,多个数据库就是通过 u ...

  7. Django笔记二十五之数据库函数之日期函数

    本文首发于公众号:Hunter后端 原文链接:Django笔记二十五之数据库函数之日期函数 日期函数主要介绍两个大类,Extract() 和 Trunc() Extract() 函数作用是提取日期,比 ...

  8. Django笔记二十六之数据库函数之数学公式函数

    本文首发于公众号:Hunter后端 原文链接:Django笔记二十六之数据库函数之数学公式函数 这一篇来介绍一下公式函数,主要是数学公式. 其中 sin,cos 这种大多数情况下用不上的就不介绍了,主 ...

  9. Django笔记二十九之中间件介绍

    本文首发于公众号:Hunter后端 原文链接:Django笔记二十九之中间件介绍 这一节介绍一下 Django 的中间件. 关于中间件,官方文档的解释为:中间件是一个嵌入 Django 系统的 req ...

  10. Django笔记三十二之session登录验证操作

    本文首发于公众号:Hunter后端 原文链接:Django笔记三十二之session登录验证操作 这一篇笔记将介绍 session 相关的内容,包括如何在系统中使用 session,以及利用 sess ...

随机推荐

  1. 手把手教你基于luatos的4G(LTE Cat.1)模组接入华为云物联网平台

    摘要:本期文章采用了4G LTE Cat.1模块,编程语言用的是lua,实现对华为云物联网平台的设备通信与控制 本文分享自华为云社区<基于luatos的4G(LTE Cat.1)模组接入华为云物 ...

  2. Javaweb基础复习------Cookie+Session案例的实现(登录注册案例)

    Cookie对象的创建--Cookie cookie=new Cookie("key","value"); 发送Cookie:resp.addCookie(); ...

  3. 14.AQS的前世,从1990年的论文说起

    大家好,我是王有志.关注王有志,一起聊技术,聊游戏,聊在外漂泊的生活. 鸽了这么久怪不好意思的,因此送一本<多处理器编程的艺术>,快点击此处参加吧.另外欢迎大家加入"共同富裕的J ...

  4. Java 2023年接地气的中高级面试题一(附答案)

    直入主题: Q1:为什么要用分布式锁? 在分布式系统中,多个进程或线程可能会同时访问共享资源,这可能会导致数据不一致.并发性问题.性能下降等问题.为了解决这些问题,我们通常会使用分布式锁来协调多个进程 ...

  5. day11-SpringBoot中注入Servlet&Filter&Listener

    SpringBoot中注入Servlet&Filter&Listener 1.基本介绍 文档:SpringBoot中注入Servlet&Filter&Listener ...

  6. CentOS7环境下数据库运维---主从复制、读写分离

    1.理解MySQL主从复制原理 主服务器开启binlog日志,从库生成log dump线程,将binlog日志传给从库I/O线程,从库生成俩个线程,一个是I/O线程,一个是SQL线程,I/O线程去请主 ...

  7. 机器学习(三):朴素贝叶斯+贝叶斯估计+BP人工神经网络习题手算|手工推导与习题计算

    1.有 1000 个水果样例. 它们可能是香蕉,橙子或其它水果,已知每个水果的 3 种特性:是否偏长.是否甜.颜色是否是黄色 类型 长 不长 甜 不甜 黄色 非黄 Total 香蕉 400 100 3 ...

  8. KMP算法的研究

    前脚学后脚忘,是时候给自己通俗易懂的总结一下了 KMP是什么 在计算机科学中,Knuth-Morris-Pratt字符串查找算法(简称为KMP算法)可在一个字符串S内查找一个词W的出现位置.一个词在不 ...

  9. [原创][luogu]P1217 回文质数 真·生成回文的方法

    不多说,直接看代码,都在注释里 // 中心思想: // * 1. 代入数据只想回文的一半和位数的变化 // * 例. 1001 和 101 都存的是10, 但是位数一个是4, 一个是3 // * 2. ...

  10. pandas这dataframe结构

    认识DataFrame结构 DataFrame 一个表格型的数据结构,既有行标签(index),又有列标签(columns),它也被称异构数据表,所谓异构,指的是表格中每列的数据类型可以不同,比如可以 ...