"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Ce que j'ai appris cette semaine #0

Ce que j'ai appris cette semaine #0

Publié le 2024-07-29
Parcourir:304

What I

Je me retrouve chaque semaine à apprendre une ou plusieurs nouvelles choses, du moins du point de vue de ma propre expérience personnelle. J'ai donc pensé que le partager ici serait un bon moyen de consolider certaines de ces connaissances, d'en garder une trace et potentiellement d'aider quelqu'un d'autre à apprendre quelque chose qu'il ne savait pas auparavant.

Cette semaine, j'ai appris qu'il est possible d'écrire un script python capable de prendre une liste de noms de sauvegarde de base de données, d'importer une base de données dans MySQL, puis de démarrer un contexte Flask et d'exécuter un rapport sur la base de données telle qu'elle est, et puis rincez et répétez.

Cela semble peut-être être un concept simple, mais essayer d'y parvenir en utilisant une approche essentiellement standard s'est avéré trompeusement difficile. J'ai commencé par simplement écrire un script qui importait la sauvegarde, puis j'ai exécuté le rapport sur les données importées et je l'ai mis en boucle. Mais malheureusement, j'ai rencontré un terminal qui s'est bloqué lors de la deuxième itération de la boucle, et j'ai donc commencé à comprendre ce qui pourrait se passer.

La première pensée qui m'est venue à l'esprit était que les importations que je faisais à partir de l'application Flask entraînaient le blocage de l'importation puisque le script n'était pas encore terminé, donc le verrou maintenant la connexion à la base de données avec Flask était toujours actif , mais il n'y avait aucun message d'erreur pour m'informer que cela se produisait, et je suppose que c'est intentionnel, j'ai donc utilisé mon expérience avec Flask pour rationaliser que c'était très probablement le cas.

Alors, je suis allé chercher comment simplement « désimporter » les modules que j'avais importés de Flask et je suis tombé sur le mot-clé del en python pour faire le travail et j'ai réessayé... Seulement pour rencontrer le même terminal suspendu avec lequel je m'étais assis précédemment. Nous étions donc de retour à la planche à dessin.

La pensée suivante que j'ai eue était qu'il se peut que les modules aient été supprimés, mais que le contexte de l'application Flask est toujours en cours d'exécution quelque part. Pour forcer le contexte de l'application Flask à s'exécuter et à s'arrêter là où je le voulais, j'ai essayé une approche que j'avais utilisée dans une tâche précédente il y a environ 2 ans où je devais utiliser le contexte de l'application Flask pour envoyer des e-mails de manière asynchrone.

J'ai ensuite essayé d'importer l'application à partir de la boucle for, puis d'utiliser la commande with app.app_context(): pour forcer Flask à démarrer et à s'arrêter uniquement dans ce contexte spécifié. J'ai ensuite exécuté le script et regardé le terminal en retenant mon souffle pendant que j'attendais environ une minute pour que la base de données soit importée dans la première boucle, puis elle a commencé avec la 2ème comme avant, et puis, succès ! La deuxième importation a fonctionné et j'ai obtenu le résultat attendu de l'étape suivante indiquant que le rapport avait été terminé, ce que j'ai vérifié par rapport au fichier de sortie.

J'étais satisfait de mes résultats car ce n'était pas quelque chose que j'avais fait auparavant, donc j'étais heureux de pouvoir le comprendre et le faire fonctionner comme prévu.

Vous vous demandez peut-être pourquoi j'essayais de faire ça en premier lieu, et bien, c'est une bonne question. J'ai été chargé d'extraire un rapport mensuel historique qui nécessitait des données qui n'avaient été enregistrées nulle part ailleurs que dans les sauvegardes de la base de données, et qui ne pouvaient pas être collectées à partir de la base de données active actuelle, je n'avais donc que des sauvegardes avec lesquelles travailler pour extraire ces données. . C'est ce qui m'a amené à apprendre comment gérer le contexte Flask parallèlement aux importations de bases de données.

Pour ceux qui aiment lire un peu de code, voici comment j'ai structuré mon script :

import os # for running the database import command

backup_name_list = [
    "backup1",
    "backup2"
]

for backup_name in backup_name_list:
    # do all necessary changes or checks on the db name here
    command = f"mysql -u db_user_name --password='SomePassword' db_name 



Et voilà, c'est ainsi que j'ai pu extraire des données historiques à partir uniquement des sauvegardes de bases de données.

Ceci est très spécifique, et je m'en rends compte, mais ce n'est pas non plus un tutoriel, c'est simplement un exutoire pour mon expérience d'apprentissage personnelle, que j'aimerais partager ici dans l'espoir que cela devienne soit une lecture intéressante, soit un conseil utile à quelqu'un, quelque part.

Si vous êtes arrivé jusqu'ici, je voudrais vous remercier d'avoir lu et j'espère que vous me rejoindrez dans mon prochain message.

Déclaration de sortie Cet article est reproduit sur : https://dev.to/kyledev008/what-ive-learned-this-week-0-57ek?1 En cas de violation, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3