Cet article partagera avec vous une méthode de réexécution régulière pour obtenir des données de base de données basées sur Python. Il est très bon et a une valeur de référence. Les amis qui en ont besoin peuvent s'y référer
Les enfants qui en ont besoin. les big data écrivent souvent des tâches planifiées. Lors de l'exécution de données, en raison des dépendances entre les tâches (généralement celles en aval dépendent de la sortie des données en amont), l'acquisition des données échoue souvent, car de nombreuses personnes
vérifieront les journaux après. découvrir que les données échouent, puis allez manuellement et effectuez vos propres tâches. Ci-dessous, j'ai implémenté une exécution automatique et répétée pour récupérer les données de la base de données. En cas d'échec, elle les récupérera automatiquement jusqu'à ce que les données soient obtenues.
Créer une table de données :
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;
La table de données est vide au début. Lorsque le script réessaye pendant la 3ème seconde, quelque chose comme Database insère des données.
Ce qui suit est l'implémentation du code 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 = '' 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
Vous pouvez l'exécuter manuellement en vous-même. À la 3ème seconde, exécutez le sql suivant
insert into testtable(`name`) values ('123'),('456'),('789'),('1111'),('3222'),('444');
Ce qui suit est le script de la tâche planifiée
00 08 * * * cd /home/python/lsh_sync; python getdata.py >> getdata.log 2>&1
Ce qui précède est une réexécution programmée écrite en Python pour obtenir les données de la base de données introduites par l'éditeur. J'espère que cela vous sera utile. Si vous avez des questions, veuillez me laisser un message. . L'éditeur répondra à tout le monde rapidement. Je voudrais également vous remercier tous pour votre soutien au site Web PHP chinois !
Pour plus d'articles liés à une réexécution programmée écrite en Python pour obtenir des données de base de données, veuillez faire attention au site Web PHP chinois !