博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python3.6 Schedule模块定时任务
阅读量:6240 次
发布时间:2019-06-22

本文共 1813 字,大约阅读时间需要 6 分钟。

本文使用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 驱动安装,可参考:

②使用schedule 模块来执行周期性任务。关于该模块的用法,可参考。

③使用csv模块将查询到的记录写入文件

整个完整代码如下:

import scheduleimport codecsimport csvimport timefrom sqlalchemy import create_enginedef get_conn():    engine = create_engine("mysql+pymysql://root:password@localhost:3306/test?charset=utf8mb4")    conn = engine.connect()    return conndef 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 模块可以非常方便地实现:周期性地在每天的某个时间点上执行任务。其官方示例如下:

1 import schedule 2 import time 3  4 def job(): 5     print("I'm working...") 6  7 schedule.every(10).minutes.do(job) 8 schedule.every().hour.do(job) 9 schedule.every().day.at("10:30").do(job)10 schedule.every().monday.do(job)11 schedule.every().wednesday.at("13:15").do(job)12 13 while True:14     schedule.run_pending()15     time.sleep(1)

 

另外,关于 Sqlalchemy 的中文资料感觉好少,而官网的示例看起来又比较困难。推荐一本英文版书籍:《essential sqlalchemy》。这本书讲了很多可直接运行的示例程序,比官网上的示例要更容易理解。

 

参考链接:https://github.com/dbader/schedule

原文:http://www.cnblogs.com/hapjin/p/7805820.html

你可能感兴趣的文章
[解题报告]499 - What's The Frequency, Kenneth?
查看>>
Vue入门---常用指令详解
查看>>
iOS 越狱后 SSH 不能连接
查看>>
soj 3291 Distribute The Apples II DP
查看>>
苹果App Store审核指南中文翻译(更新至140227)
查看>>
转 -- OK6410 tftp下载内核、文件系统以及nand flash地址相关整理、总结
查看>>
原来对MFC一无所知
查看>>
Java程序员看C++代码
查看>>
python处理Excel - xlrd xlwr openpyxl
查看>>
JS实现的购物车
查看>>
bzoj 3998 [TJOI2015]弦论——后缀自动机
查看>>
STL 的 vector 根据元素的值来删除元素的方法
查看>>
NOI2002银河英雄传说——带权并查集
查看>>
复合数据类型,英文词频统计
查看>>
“main cannot be resolved or is not a field”解决方案
查看>>
oc中使用switch实现图片浏览功能,补充其它的实现方式
查看>>
6、DRN-----深度强化学习在新闻推荐上的应用
查看>>
用父类指针指向子类对象
查看>>
Flexigrid默认是可以选择多行
查看>>
PHP导入导出Excel方法小结
查看>>