python + docker, 实现天气数据 从FTP获取以及持久化(四)-- 数据准备

前情提要

山西快乐十分走势 www.yfhdr.cn 在之前的文章里,我们已经掌握从FTP上面下载天气数据然后插入到数据库中。

但是如何将我们已有的数据放到生产环境中呢?

 

思考

首先,我们先简单的理一理现在的情况。

目前: FTP上面已有半个月的天气数;每天会有2个txt文件产生 (每个文件大小约为 50~60 kb),由天气供应商负责上传到FTP上。 如图所示:

思路1:

经过简单的测试,每次读取一个txt文件然后写入数据库的时间大约为1s, 因此,可以考虑写一个小工具,从FTP上依次读取所有的txt, 然后插入数据库。也就是利用小工具到现场后再准备数据。

 

思路2:

直接将数据库文件导出,然后到现场部署的时候导入。

 

想好了就是干

① 思路1的解决方案

由于之前已经写好了FTP读取以及数据库插入数据的方法,这里只需要简单封装一下,即可满足我们的功能。 ~~~show me the code ~~

def fetch_insert_all_data():
    ftp = FTPUtil('xxx.xxx.xxx.xxx')
    ftp.Login('xxxxxx', 'xxxxxx')

    # create database and tables
    nRet = preparation()
    if nRet != 0:
        print "Connect MySQL DB error!"
        return

    # fetach all data from FTP and insert into database
    for file in ftp.listFiles():
        remote_file = file
        local_file = file
        if ftp.DownLoadFile(local_file, remote_file):
            print "Download file {0} from FTP ok.".format(remote_file)
            list_weather_tumple = decode_weather_from_txt(local_file)
            nRet2 = insert_or_update_weather_data(list_weather_tumple)
            if nRet2 >= 0:
                print "Insert or update weather {0} ok.".format(remote_file)
            else:
                print "Insert or update weather {0} error!".format(remote_file)

            delete_file(local_file)
        else:
            print "Download file {0} from FTP error!".format(remote_file)

    ftp.close();

 

 

② 思路2的解决方案

首先,不得不说,虽然这种办法不用撸代码,但是需要 play 数据库??; 经过了不断地尝试以及查找 。。。总结如下:

1. 导出数据库表(在 terminal上输入)

# mysqldump   -u root  -p weather_db  weather > /var/lib/mysql/weather.sql

按照提示,输入正确的password, 我们就可以看到导出的文件啦!

 

2. 导入数据库表 

2.1 首先需要进入MySQL命令行

# mysql -u root -pxxxx

 

2.2 建立数据库

mysql> create database weather_db
mysql> use weather_db

这一点非常重要:因为我们的导出文件是基于数据库表的,数据库表需要依附于数据库

 

2.3 运行 SQL脚本

这里不得不吐槽一下,网上的童鞋说可以在terminal上面直接执行 SQL文件, 但是我这里一直出错?。?! 

当我 “不小心” (瞎尝试) 在MySQL的命令行中运行脚本, where amazing happend !!

 

OK, 让我们查看一下数据库表和数据,

~大功告成~

总结

总的来说,两种方法各有千秋:

方案1 需要花费更多的时间(收集 1天数据耗时约为 1s)。

方案2 需要我们将数据导入后,也许还需要再做一些插入操作(再插入几天的数据)。

 

 

Lastly, 感谢大家的收看,如果有更好建议也欢迎留言交流。

posted @ 2018-07-13 16:29 TonyZhang24 阅读(...) 评论(...) 编辑 收藏
  • 溃疡恶变也会腹痛 这些肿瘤最容易被误诊 2018-09-04
  • 候选企业:光大证券股份有限公司 2018-09-04
  • 25年全球健康三大变化 2018-07-26
  • 林肯中心室内乐协会再掀浪潮 完整录音入驻中国 亚洲巡演整装待发 室内乐 厂牌 2018-07-25
  • 社会主义是过渡阶段,最终实现共产主义才是其目的。社会主义是在消灭私有制,建立公有制直至无私,实现共产主义。 2018-07-25
  • 呼死你团伙被摧毁 封停83万余个账号抓获210余人 2018-07-25
  • 回复@老老保老张工:伪高工不仅智力低下,知识也很匮乏也!连啥叫计划经济都没搞懂! 2018-07-24
  • 中国经济充当了世界经济发展的火车头。但是,作为世界经济火车头的中国,在世界主要经济体股市都走牛的情况下,为何熊途漫漫?这种不正常的现象,背后是我们资本市场的投融 2018-07-24
  • 社评:中国打的是对美贸易自卫反击战 2018-07-24
  • 世界献血者日 近距离接触一袋合格血的成长历程 2018-07-23
  • 便道汛期被淹学生上学遇阻 来凤老伯坚持背娃过河40年 2018-07-23
  • 以朝鲜民主主义人民共和国为例,难道特金会是由朝鲜工人、农民主导的?[哈哈] 2018-07-23
  • 设计众议院:神奇的MQB让全新一代宝来重生 2018-07-22
  • 回复@不能这样啊:那你不是可以啥事不做天天甩起手耍?你自己不求上进还不准别人有所追求么? 2018-07-22
  • 三位基层书记的一周:思想不转换 其他都白扯 2018-07-22
  • 503| 650| 603| 27| 568| 380| 943| 615| 7| 384|