Python寫的一個(gè)定時(shí)重跑獲取數(shù)據(jù)庫數(shù)據(jù)
做大數(shù)據(jù)的童鞋經(jīng)常會(huì)寫定時(shí)任務(wù)跑數(shù)據(jù),由于任務(wù)之間的依賴(一般都是下游依賴上游的數(shù)據(jù)產(chǎn)出),所以經(jīng)常會(huì)導(dǎo)致數(shù)據(jù)獲取失敗,因?yàn)楹芏嗳税l(fā)現(xiàn)數(shù)據(jù)失敗后
都會(huì)去查看日志,然后手動(dòng)去執(zhí)行自己的任務(wù)。下面我實(shí)現(xiàn)了一個(gè)自動(dòng)重復(fù)執(zhí)行去數(shù)據(jù)庫取數(shù),如果失敗后自動(dòng)重新去獲取,直到把數(shù)據(jù)獲取到。
建數(shù)據(jù)表:
CREATE TABLE `testtable` ( 2 `id` int(11) unsigned NOT NULL AUTO_INCREMENT, 3 `name` varchar(20) NOT NULL, 4 PRIMARY KEY (`id`) 5 ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
開始的時(shí)候數(shù)據(jù)表是空的,等到腳本重試第3秒的時(shí)候像數(shù)據(jù)庫插入數(shù)據(jù)。
以下是python代碼的實(shí)現(xiàn)
#!/usr/bin/env python #-*- coning:utf-8 -*- 3 4 import MySQLdb 5 from time import sleep 6 7 class GetData(object): 8 def __init__(self): 9 self.conn = '' 10 self.host = '127.0.0.1' 11 self.port = 3306 12 self.user = 'root' 13 self.passwd = '123456' 14 self.db = 'test' 15 self.cnum = 5 #set retry number 16 17 def init_connect(self): 18 self.conn = MySQLdb.connect(host=self.host, user=self.user, passwd=self.passwd, db=self.db, port=self.port, 19 charset='utf8') 20 21 def get_data(self): 22 self.init_connect 23 cur = self.conn.cursor 24 sql = "select * from testtable" 25 cur.execute(sql) 26 rs = cur.fetchall 27 cur.close 28 self.conn.close 29 return rs 30 31 def run(self): 32 count = 1 33 while (count <= self.cnum): 34 rs = self.get_data 35 if len(rs) > 0: 36 print len(rs) 37 break 38 39 print count 40 sleep(10) 41 count += 1 42 43 if __name__ == '__main__': 44 gd = GetData 45 gd.run
自己可以手動(dòng)執(zhí)行,在代碼執(zhí)行到第3秒的時(shí)候,執(zhí)行下面的sql
insert into testtable(`name`) values ('123'),('456'),('789'),('1111'),('3222'),('444');
下面是定時(shí)的任務(wù)的腳本
00 08 * * * cd /home/python/lsh_sync; python getdata.py >> getdata.log 2>&1
以上所述是小編給大家介紹的Python寫的一個(gè)定時(shí)重跑獲取數(shù)據(jù)庫數(shù)據(jù),希望對(duì)大家有所幫助,如果大家有任何疑問請給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- python定時(shí)器(Timer)用法簡單實(shí)例
- python定時(shí)執(zhí)行指定函數(shù)的方法
- python定時(shí)檢查某個(gè)進(jìn)程是否已經(jīng)關(guān)閉的方法
- 用Python編寫簡單的定時(shí)器的方法
- Python3中常用的處理時(shí)間和實(shí)現(xiàn)定時(shí)任務(wù)的方法的介紹
- python實(shí)現(xiàn)定時(shí)播放mp3
- python通過線程實(shí)現(xiàn)定時(shí)器timer的方法
- python單線程實(shí)現(xiàn)多個(gè)定時(shí)器示例
- python定時(shí)檢查啟動(dòng)某個(gè)exe程序適合檢測exe是否掛了
相關(guān)文章
Python3實(shí)現(xiàn)取圖片中特定的像素替換指定的顏色示例
這篇文章主要介紹了Python3實(shí)現(xiàn)取圖片中特定的像素替換指定的顏色,涉及Python3針對(duì)圖片文件的讀取、轉(zhuǎn)換、生成等相關(guān)操作技巧,需要的朋友可以參考下2019-01-01Blueprint實(shí)現(xiàn)路由分組及Flask中session的使用詳解
這篇文章主要為大家介紹了Blueprint實(shí)現(xiàn)路由分組及Flask中session的使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11Python實(shí)現(xiàn)去除代碼前行號(hào)的方法
這篇文章主要介紹了Python實(shí)現(xiàn)去除代碼前行號(hào)的方法,實(shí)例分析了Python操作字符的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03憶童年!用Python實(shí)現(xiàn)憤怒的小鳥游戲
好久都沒玩過憤怒的小鳥了,今天咱自己做一個(gè)玩玩,文中有非常詳細(xì)的代碼示例,對(duì)想玩的小伙伴們很有用哦,需要的朋友可以參考下2021-06-06