Python Django: models.py 中的 auto_now 和 auto_now_add 的区别

本文介绍了在Python Django的models.py文件中,`auto_now`和`auto_now_add`两个字段选项的区别。在MySQL数据库环境下,`auto_now`用于每次更新记录时自动设置当前时间,而`auto_now_add`则仅在创建新记录时设置一次当前时间。文章通过配置数据库环境,创建模型、路由和视图来展示这两个特性的应用。
摘要由CSDN通过智能技术生成

1. 验证环境:mysql 环境下

1.1 配置数据库环境为 mysql 数据库环境

1. 修改 setting.py 如下
    DATABASES = {
   
        'default': {
   
            'ENGINE': 'django.db.backends.mysql',
            'HOST': '127.0.0.1',
            'PORT': '3306',
            'NAME': 'datedb',  # 连接的数据库名称,需要事先建好。
            'USER': 'root',
            'PASSWORD': 'toor',
        }
    }

2. 创建 mysql 数据库
mysql> CREATE DATABASE `datedb` /*!40100 DEFAULT CHARACTER SET utf8 */ /*!80016 DEFAULT ENCRYPTION='N' */;


3. 在项目配置文件夹下的 __init__.py 文件中,配置 Django 使用 pymysql 模块连接 MySQL 数据库:
	import pymysql
	pymysql.install_as_MySQLdb(
#定时任务 : (任意APP下的views.py下或者urls.py下) from apscheduler.schedulers.background import BackgroundScheduler from django_apscheduler.jobstores import DjangoJobStore, register_job from apps.intelligent_draw.models import Machines from datetime import datetime, timedelta from utils.const import AllConsts from django.core.mail import send_mail #将已经过时的工作都删除 __lt小于 # from django_apscheduler.models import DjangoJob # DjangoJob.objects.filter(next_run_time__lte=datetime.now()).delete() # 将数据库已经过时的工作删除 # 开启定时配置 # 实例化调度器 scheduler = BackgroundScheduler() # 调度器使用默认的DjangoJobStore() scheduler.add_jobstore(DjangoJobStore(), 'default') # trigger: 任务执行的方式,共有三种:'date':一次性任务、'interval':循环任务、'cron':定时任务。 # @register_job(scheduler, 'cron', day_of_week='mon-fri', hour='9', minute='30', second='10',id='task_test') #注册一个定时任务 (replace_existing:重新启动时替换现有作业;防止id冲突报错) # 新增一个定时任务,每隔5分钟检测一次,如果发现机器的last_updated比现在的时间晚了半个小时,则更新机器状态为异常,并且发送一封邮件进行告警。 @register_job(scheduler, 'cron', minute='*/5', id='job', replace_existing=True) # 这里写你要执行的任务 def job_task(): print("定时任务开始:") half_hour_ago = datetime.now() - timedelta(minutes=30) machines = Machines.objects.filter(last_updated__lte=half_hour_ago) machine_list = [] for machine in machines: machine_list.append(machine.id) machines.update(status=AllConsts.MACHINE_STATUS_ILLEGAL) send_mail('邮件标题', '邮件内容', 'yourmail@qq.com', ['yourmail@126.com', 'yormail@qq.com']) # 定时任务开始 scheduler.start()这段代码有没有什么问题?
最新发布
05-25
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值