Python3.6 Schedule模块定时任务
本文使用Python的Schedule模块、Python访问数据库的框架SQLAIchemy 实现了一个:周期性读取mysql 数据的小示例。
一,编程环境
PyCharm2016,Anaconda3 Python3.6
需要安装schedule模块,该模块网址:https://pypi.python.org/pypi/schedule
打开Anaconda Prompt,输入:conda install schedule 提示:Package Not Found Error
于是,使用 pip 安装。由于Anaconda3 中已经自带了pip,如下图:

于是 cmd 命令行切换到 scripts 目录,执行 pip.exe install schedule 安装成功。这样就可以在PyCharm里面 import schedule 了
二, 在每天某个指定的时间点上,从数据库中查找数据然后写入 csv 文件
①使用 sqlalchemy 模块来建立数据库连接,关于windows 下 python3.6 for mysql 驱动安装,可参考:windows10 下使用Pycharm2016 基于Anaconda3 Python3.6 安装Mysql驱动总结
②使用schedule 模块来执行周期性任务。关于该模块的用法,可参考官网示例。
③使用csv模块将查询到的记录写入文件
整个完整代码如下:
import schedule
import codecs
import csv
import time
from sqlalchemy import create_engine def get_conn():
engine = create_engine("mysql+pymysql://root:password@localhost:3306/test?charset=utf8mb4")
conn = engine.connect()
return conn def query():
sql = "select * from user limit 10"
conn = get_conn()
return conn.execute(sql) def read_mysql_to_csv(filename):
with codecs.open(filename=filename, mode='w') as f:
write = csv.writer(f, dialect='excel') results = query()
for result in results:
write.writerow(result) schedule.every().day.at("17:49").do(read_mysql_to_csv, "test")
while True:
schedule.run_pending()
time.sleep(10)
三,总结
schedule 模块可以非常方便地实现:周期性地在每天的某个时间点上执行任务。其官方示例如下:
import schedule
import time def job():
print("I'm working...") schedule.every(10).minutes.do(job)
schedule.every().hour.do(job)
schedule.every().day.at("10:30").do(job)
schedule.every().monday.do(job)
schedule.every().wednesday.at("13:15").do(job) while True:
schedule.run_pending()
time.sleep(1)
另外,关于 Sqlalchemy 的中文资料感觉好少,而官网的示例看起来又比较困难。推荐一本英文版书籍:《essential sqlalchemy》。这本书讲了很多可直接运行的示例程序,比官网上的示例要更容易理解。
参考链接:https://github.com/dbader/schedule
原文:http://www.cnblogs.com/hapjin/p/7805820.html
Python3.6 Schedule模块定时任务的更多相关文章
- Python3之turtle模块的使用
Python3之turtle模块的使用 直接扣代码就行: import turtle as t t.pensize(4) t.hideturtle() t.colormode(255) t.c ...
- python基础系列教程——Python3.x标准模块库目录
python基础系列教程——Python3.x标准模块库目录 文本 string:通用字符串操作 re:正则表达式操作 difflib:差异计算工具 textwrap:文本填充 unicodedata ...
- Python3:Requests模块的异常值处理
Python3:Requests模块的异常值处理 用Python的requests模块进行爬虫时,一个简单高效的模块就是requests模块,利用get()或者post()函数,发送请求. 但是在真正 ...
- Python3中正则模块re.compile、re.match及re.search函数用法详解
Python3中正则模块re.compile.re.match及re.search函数用法 re模块 re.compile.re.match. re.search 正则匹配的时候,第一个字符是 r,表 ...
- Python3安装Celery模块后执行Celery命令报错
1 Python3安装Celery模块后执行Celery命令报错 pip3 install celery # 安装正常,但是执行celery 命令的时候提示没有_ssl模块什么的 手动在Python解 ...
- Python3之configparser模块
1. 简介 configparser用于配置文件解析,可以解析特定格式的配置文件,多数此类配置文件名格式为XXX.ini,例如mysql的配置文件.在python3.X中 模块名为configpars ...
- python3.7 os模块
#!/usr/bin/env python __author__ = "lrtao2010" #python3.7 os模块 #os模块是与操作系统交互的一个接口 # os.get ...
- python3.7 json模块
#!/usr/bin/env python __author__ = "lrtao2010" #python3.7 json模块 ''' 要在不同的编程语言之间传递对象,就必须把对 ...
- python3.7 random模块
#!/usr/bin/env python __author__ = "lrtao2010" #python3.7 random模块 import random #随机模块 # r ...
随机推荐
- AtCoder ExaWizards2019题解
AtCoder ExaWizards2019题解 AtCoder (因为代码直接用模板写的,可能有点冗长) A.Regular Triangle 给你三根棍子的长度,问你能否用他们组成等边三角形. 什 ...
- 【BZOJ1185】[HNOI2007]最小矩形覆盖(凸包,旋转卡壳)
[BZOJ1185][HNOI2007]最小矩形覆盖(凸包,旋转卡壳) 题面 BZOJ 洛谷 题解 最小的矩形一定存在一条边在凸包上,那么枚举这条边,我们还差三个点,即距离当前边的最远点,以及做这条边 ...
- 区分IE8/IE7/IE6及其他浏览器
在 CSS中常用特殊字符识别表: (1)*: IE6+IE7都能识别*,而标准浏览器FF+IE8是不能识别*的; (2)!important: 除IE6不能识别 !important外, FF+I ...
- 使用zabbix监控mariadb性能状态
0x01 前言 zabbix内置Mysql的监控模版,因为mariadb和Mysql两者的相关性,所以这个模版也能用在mariadb services上. 0x02 Mysql 首先要在mariadb ...
- kvm虚拟化管理
虚拟化 KVM (kernel-based virtual machine) 常见的一些虚拟化的软件xen kvm vmware esx openVZ Oracle VM VirtualBox vsp ...
- C/C++ 控制台窗口暂停
为什么我看不到控制台的输出结果? 在编写C++程序中,经常会出现,控制台窗口一闪就消失了的情况 为什么会这样? 原因简单到有点可笑:因为程序运行结束了 对于控制台程序,操作系统让它开始运行前会为它造一 ...
- ftp 两台服务器传输文件 apache
import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.OutputS ...
- agc032
T1 题意:你要进行n次操作,第i次选择一个数k∈[1,i],并插入到当前序列的第k个位置.给定目标序列,输出操作序列.100,2s. 解:冷静分析一波,我们可以从后往前确定操作序列.这样每次确定一个 ...
- A1136. Delayed Palindrome
Consider a positive integer N written in standard notation with k+1 digits ai as ak⋯a1a0 ...
- JavaScript深入之词法作用域和动态作用域
作用域 作用域是指程序源代码中定义变量的区域. 作用域规定了如何查找变量,也就是确定当前执行代码对变量的访问权限. JavaScript 采用词法作用域,也就是静态作用域. 静态作用域与动态作用域 因 ...