zoukankan      html  css  js  c++  java
  • 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 模块可以非常方便地实现:周期性地在每天的某个时间点上执行任务。其官方示例如下:

     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

  • 相关阅读:
    Mayan游戏 (codevs 1136)题解
    虫食算 (codevs 1064)题解
    靶形数独 (codevs 1174)题解
    黑白棋游戏 (codevs 2743)题解
    神经网络 (codevs 1088) 题解
    The Rotation Game (POJ 2286) 题解
    倒水问题 (codevs 1226) 题解
    银河英雄传说 (codevs 1540) 题解
    生日蛋糕 (codevs 1710) 题解
    第一章 1.11 高阶函数
  • 原文地址:https://www.cnblogs.com/hapjin/p/7805820.html
Copyright © 2011-2022 走看看