flask SQLAlchemy查询数据库最近30天,一个月,一周,12小时或之前的数据
xx
最近项目涉及需求,前端有个 最新 的按钮
就是查询数据库 最近一个月的数据 这里是使用SQLAlchemy使用的
当然我们可能经常涉及一些数据库查询最近30天,一个月,一周,12小时或者半小时
或者 一天 一周 一个月之前的的数据
** 这里主要整理下 SQLAlchemy 与原生的sql查询两种方式**
首先获取当前的日期
image
这里需要注意的是 服务器是否与当前实际时间一致
因为是基于docker部署项目 服务器获取的时间与本地时间一致。
image
**这样就可以获取当前近30条数据 **
**常用的查询整理如下(基于SQLALCHEMY) **
最近:
from datetime import datetime, timedelta NOW = datetime.now() 最近30天数据 macroEconomyTable = Scrapy.query.filter(Scrapy.date >= NOW - timedelta(days=30)).all() 最近一周数据 macroEconomyTable = Scrapy.query.filter(Scrapy.date >= NOW - timedelta(days=7)).all() 最近1天数据 macroEconomyTable = Scrapy.query.filter(Scrapy.date >= NOW - timedelta(days=1)).all() 最近12小时 macroEconomyTable = Scrapy.query.filter(Scrapy.date >= NOW - timedelta(hours=12)).all() 最近半小时 macroEconomyTable = Scrapy.query.filter(Scrapy.date >= NOW - timedelta(seconds=30)).all()
之前:
from datetime import datetime, timedelta NOW = datetime.now() 30天之前 macroEconomyTable = Scrapy.query.filter(Scrapy.date <= NOW - timedelta(days=30)).all() 一周之前 macroEconomyTable = Scrapy.query.filter(Scrapy.date <= NOW - timedelta(days=7)).all() 1天之前 macroEconomyTable = Scrapy.query.filter(Scrapy.date <= NOW - timedelta(days=1)).all() 12小时之前 macroEconomyTable = Scrapy.query.filter(Scrapy.date <= NOW - timedelta(hours=12)).all() 半小时之前 macroEconomyTable = Scrapy.query.filter(Scrapy.date <= NOW - timedelta(seconds=30)).all()
下面是整理的一些基于原生的sql 关于日期的查询
# 近七天macroEconomyTable = "SELECT * FROM scrapy_info where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(add_time)" # 近30天macroEconomyTable = "SELECT * FROM scrapy_info where DATE_SUB(CURDATE(), INTERVAL 30 DAY) <= date(add_time)" # 今天macroEconomyTable = "select * from scrapy_info where to_days(add_time) = to_days(now())"# 本周macroEconomyTable = "SELECT * FROM scrapy_info WHERE YEARWEEK(date_format(add_time,'%Y-%m-%d')) = YEARWEEK(now())" # 本月macroEconomyTable = "SELECT * FROM scrapy_info WHERE DATE_FORMAT(add_time, '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' )"
这些基本就够使用了 具体的根据情况而定 主要是掌握规则就可以了
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- linux 编译安装python3.6的教程详解
- Unix/Linux系统下的nobody用户与nologin详细介绍
- 详解flutter engine 那些没被释放的东西
- Centos7安装PHP及Nginx的教程详解
- Flutter Image实现图片加载
- Centos7系统下搭建.NET Core2.0+Nginx+Supervisor环境
- CentOS7 LNMP+phpmyadmin环境搭建 第二篇LNMP环境搭建教程
- 详解Linux 下开发微信小程序安装开发工具
- Linux一个增强的截图及分享工具:ScreenCloud
- linux 命名管道实例详解
- 11个JavaScript代码重构最佳实践
- Linux中在不破坏磁盘的情况下使用dd命令
- Jexus开机自动启动配置方法
- 在 CentOS 7 中安装 MySQL 8 的教程详解
- Centos7.2 编译安装PHP7.0.2的步骤