OVH Cloud OVH Cloud

Choix de modele

2 réponses
Avatar
meles{
Bonjour à tous,
La question qui suite n'est pas strictement pythonesque mais comme
j'implémente ça en python, je me suis dit que j'aurai peut être un coup de
main ici.

Je suis en train d'écrire un script qui est chargé d'aller comparer des
données dans 2 bases de données (A et B ou B est read only) afin de
déterminer s'il existe des divergences (et créer un fichier pour aller les
corriger dans A).

Les données manipulés sont desmouvement de personnes avec une date
d'entre,un mode d'entrée et une provenance ainsi qu'un numéro d'admission
et un lieu d'entrée codé sur 4 chiffre.

Pour ce faire, j'extrais les entrées d'une semaine pour A et B via ODBC et
je les copies dans un fichier tabulé.

Je reverse tout ça dans sqlite en python en lisant chacun des fichiers ligne
à ligne puis j'effectue mes comparaisons en SQL a grand coup de UNION,
INTERSECT et EXCEPT.

C'est pas très optimal mais je ne suis pas très a cheval sur la rapidité.

Je me suis dit qu'il y avait peut être une manière plus objet de faire ceci.
Cela vaudrait'il le coup de créer des objets identifiés par leur numéro
d'admission, avec chacun des propriétés mode_dentréee, provenance,
date_dentrée,etc.... Qu'en pensez vous. Si oui, comment comparer tout ça
efficacement ensuite.

Cordialement

Blaise

2 réponses

Avatar
Bruno Desthuilliers
Bonjour à tous,
La question qui suite n'est pas strictement pythonesque mais comme
j'implémente ça en python, je me suis dit que j'aurai peut être un coup de
main ici.

Je suis en train d'écrire un script qui est chargé d'aller comparer des
données dans 2 bases de données (A et B ou B est read only) afin de
déterminer s'il existe des divergences (et créer un fichier pour aller les
corriger dans A).

(snip)


Je reverse tout ça dans sqlite en python en lisant chacun des fichiers ligne
à ligne puis j'effectue mes comparaisons en SQL a grand coup de UNION,
INTERSECT et EXCEPT.

C'est pas très optimal mais je ne suis pas très a cheval sur la rapidité.

Je me suis dit qu'il y avait peut être une manière plus objet de faire ceci.


Plus "objet" ? Pourquoi faire ?

Cela vaudrait'il le coup de créer des objets identifiés par leur numéro
d'admission, avec chacun des propriétés mode_dentréee, provenance,
date_dentrée,etc.... Qu'en pensez vous.


Que c'est peut-être un bon exercice d'école, mais que je ne vois pas
vraiment ce que ça va apporter d'un point de vue pratique. Et je doutes
que ce soit plus efficace que ta solution actuelle

Si oui, comment comparer tout ça
efficacement ensuite.


Ma première approche serait la moins objet qu'on puisse imaginer: un
diff et un patch entre les dumps des deux bases - à condition bien sûr
qu'il s'agisse uniquement de maintenir B en synchro avec A, que les deux
bases aient la même structure, et qu'il n'y ait pas de problème avec des
champs servant de clés externes.

Sinon, quel est le problème avec ta solution actuelle ?

Avatar
meles{
Bruno Desthuilliers wrote:
Ma première approche serait la moins objet qu'on puisse imaginer: un
diff et un patch entre les dumps des deux bases - à condition bien sûr
qu'il s'agisse uniquement de maintenir B en synchro avec A, que les deux
bases aient la même structure, et qu'il n'y ait pas de problème avec des
champs servant de clés externes.


Ça serait bien trop simple. Il faut que je convertisse tout un tas de champs
entre les 2 bases, puisque dans une les dates sont des dates, mais dans
l'autre, ce sont des long int. Le sexe est codé différement d'une base à
l'autre, les clés d'identification subissent une transformation entre les 2
bases, etc....

Sinon, quel est le problème avec ta solution actuelle ?


Aucun, je me demandais juste si il n'était pas possible de faire plus
élégant. Mais tu me confirmes que je suis parti dans la bonne direction,
donc je persévère.

Cordialement

Blaise