抛砖引玉~先讲一下我自己的解决方法,期待知乎python大神能给出其他更优的方案。
理解了一下问题,关键字是‘自动获取’和‘数据库’,但考虑到自动执行如果时刻保留当时的跑数结果,会占用机子的内存,其实根据我的观察,定时自动执行执行完之后是会清内存的,也保留不下来,所以我会把获取的数据保存到本地,下面讲一下我的方法。
所需的几个模块:
1、对应数据库的第三方库,mysql对应pymysql,postgre对应psycopg2,oracle对应cx_Oracle,其他我也还没遇到过
2、apscheduler,定时工作
3、pandas,数据框处理与保存
处理思路:
1、连接数据库,不同数据库python有对应的第三方库,用账号密码ip地址直接连接
2、执行sql语句,可以用pandas里面的read_sql_query,也可以用数据库第三方库的fetchall
3、获取结果,read_sql_query直接出来带列名的DataFrame,但fetchall这种还要另外处理成DataFrame,还有其他数据处理的,在这一步加上就是了
4、保存结果,pandas里面有一个to_pickle的函数,可以把数据序列化保存在本地文件,需要用到的时候再read_pickle反序列拿出来用,比不停地执行sql要方便
5、将以上四步所有的操作代码封装成函数,作为scheduler的其中一个作业,设置执行周期和执行时间,到点就会自动获取数据保存在本地文件了
以上是我在实际应用时候的解决方案,希望能给到你一点启发~