flask SQLAlchemy查询数据库最近30天,一个月,一周,12小时或之前的数据

最近项目涉及需求,前端有个 **最新** 的按钮  
就是查询数据库 最近一个月的数据 这里是使用SQLAlchemy使用的
当然我们可能经常涉及一些数据库查询最近30天,一个月,一周,12小时或者半小时  
或者 一天 一周  一个月之前的的数据

 这里主要整理下 SQLAlchemy 与原生的sql查询两种方式

首先获取当前的日期

flask SQLAlchemy查询数据库最近30天,一个月,一周,12小时或之前的数据_第1张图片

这里需要注意的是 服务器是否与当前实际时间一致

因为是基于docker部署项目 服务器获取的时间与本地时间一致。

 

flask SQLAlchemy查询数据库最近30天,一个月,一周,12小时或之前的数据_第2张图片

 

这样就可以获取当前近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' )"  

 

这些基本就够使用了 具体的根据情况而定 主要是掌握规则就可以了

 

 

你可能感兴趣的:(sqlalchemy,flask,python,mysql,sql,python)