做大數(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ù),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
