首頁 >後端開發 >Python教學 >Python寫的一個定時重跑來取得資料庫數據

Python寫的一個定時重跑來取得資料庫數據

高洛峰
高洛峰原創
2017-02-11 13:23:261830瀏覽

本文給大家分享基於python寫的一個定時重跑獲取數據庫數據的方法,非常不錯,具有參考借鑒價值,需要的朋友參考下

做大數據的童鞋經常會寫定時任務跑數據,由於任務之間的依賴(一般都是下游依賴上游的資料產出),所以常常會導致資料取得失敗,因為很多人發現資料失敗後

都會去查看日誌,然後手動去執行自己的任務。下面我實作了一個自動重複執行去資料庫取數,如果失敗後自動重新去獲取,直到把資料獲取到。

建資料表:

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;

開始的時候資料表是空的,等到腳本重試第3秒的時候像資料庫插入資料。

以下是python程式碼的實作

#!/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 = &#39;&#39; 10 self.host = &#39;127.0.0.1&#39; 11 self.port = 3306 12 self.user = &#39;root&#39; 13 self.passwd = &#39;123456&#39; 14 self.db = &#39;test&#39; 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=&#39;utf8&#39;) 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__ == &#39;__main__&#39;: 44 gd = GetData 45 gd.run

Python寫的一個定時重跑來取得資料庫數據

自己可以手動執行,在程式碼執行到第3秒的時候,執行下面的sql

自己可以手動執行,在程式碼執行到第3秒的時候,執行下面的sql

腳本

insert into testtable(`name`) values (&#39;123&#39;),(&#39;456&#39;),(&#39;789&#39;),(&#39;1111&#39;),(&#39;3222&#39;),(&#39;444&#39;);

以上所述是小編給大家介紹的Python寫的一個定時重跑獲取數據庫數據,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回覆大家的。在此也非常感謝大家對PHP中文網的支持!

更多Python寫的一個定時重跑獲取資料庫資料相關文章請關注PHP中文網!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn