Forum Programmation.python chrono en seconde python pour DB sqlite

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
1
7
fév.
2018

Bonjour,

J'espere que je suis au bon endroit pour poser ma question, qui va vous paraitre tres simple j'imagine.
Alors voila je concois une base de donnée avec un ami afin de gerer et comparer des performances sportives, avec sqlite3 sur python, nous avons ecrit un script .py pour charger les données mais je bloque sur les chronos car il est important pour nous de pouvoir les comparer au centieme de seconde prés et cela me pose plus de probleme que prévu. En effet je ne trouve pas le type qui correspondrait a MM:SS:CC. tout nos chronos sont sous cette forme. On m'a conseillé de traiter les temps en seconde et de les convertir au moment des requetes SQL qui compareront les temps, mais la aussi je suis trop neophyte en programmation pour résoudre ce probleme seul ( je demarre la programmation avec ce projet et depuis trois mois j'avance trés petit a petit en apprenant le python et SQL suivant des tutos, videos, et autres pdf ). Alors voila je reformule plus synthetiquement : comment s'y prendre pour traiter des chronometres s'exprimant au centieme de seconde dans un script python chargeant d'une DB ?
Merci d'avance de l'attention que vous porterez a ce probleme.
( je precise que j'entreprend de vous prendre a partis aprés deux semaine de blocage a lire des chose et a en essayer d'autre qui ne donne rien )

  • # pas sur d'avoir tout compris

    Posté par  . Évalué à 2.

    Pour être honnête je ne suis pas sûr d'avoir tout compris. Quelle est l'objectif finale du programme (à part le fait de charger les données).

    Le MM:SS:CC est il sous forme de string ? Dans ce cas tu peux facilement utiliser un split(":") qui te créera une liste [MM, SS, CC].
    Tu as également un objet https://docs.python.org/fr/3/library/datetime.html#datetime.timedelta qui te permet de gérer les temps.

    Si j'avais une idée plus globale de ce que tu veux faire je pourrais te donner des conseils plus pertinents.

  • # Séparation donnée affichage

    Posté par  . Évalué à 3.

    Salut,
    En programmation il est important de bien séparer les données de leur affichage.
    Effectivement, stocké les temps en seconde est une bonne idée. Ensuite il suffit de convertir le temps pour avoir un affichage joli.

    • 83s => 1:23
    • 4000s => 1h06:40

    Il te faut également une fonction qui à partir d’une entrée te donne le temps en seconde.

    • 1h02:00 => 3720

    Pour les centièmes, il y a deux solutions :

    • Considérer les valeurs comme des valeur à virgule et donc 83.48s => 1mn 23s et 48 centièmes
    • Garder que des valeurs entières : au lieu de stocker 83, tu stockes 8300.

    J’espère être clair…

  • # SQLite Data Types

    Posté par  (site web personnel) . Évalué à 1.

    En effet je ne trouve pas le type qui correspondrait a MM:SS:CC

    Si je comprends bien tu cherches le format de données à utiliser pour stocker ta valeur.

    Dans la doc en ligne (DataTypes) il est dit que :
    SQLite does not have a storage class set aside for storing dates and/or times. Instead, the built-in Date And Time Functions of SQLite are capable of storing dates and times as TEXT, REAL, or INTEGER values:

    Mais qu'il existe des fonctions pour çà :

    Applications can chose to store dates and times in any of these formats and freely convert between formats using the built-in date and time functions.

    Du coup, je pense que ce dont tu as besoin c'est de stocker en format TEXT ou INTEGER (au choix) et de récupérer sous la forme HH:MM:SS.SSS

    essaye : sqlite> select strftime('%d-%m-%Y %H:%M:%S.%f', datetime('now'));

    • [^] # Re: SQLite Data Types

      Posté par  . Évalué à 2.

      eheh merci j'ai opté pour l'utilisation de ta fonction, ça parait fonctionner mais je suis encore en train de charger la db, pas de requete pour l'instant on a pas assez de matiere pour en tirer des truc interressant. merci en tout cas j'ai bidouillé avec stfrtime

  • # Merci :3

    Posté par  . Évalué à 1.

    Eh ben ! decidement j'vous felicite pour votre réactivité c'est super, a chaque fois c'est une reponse dans la journée. Je viens de rentrer et vais passer la soirée autour de vos conseil, je reviendrais vers vous.

  • # SQLAlchemy

    Posté par  (site web personnel) . Évalué à 2.

    Je suis conscient de répondre à côté de la plaque, mais avez-vous des raisons particulières de ne pas utiliser SQLAlchemy ?
    Cette bibliothèque permet d'utiliser SQLite beaucoup plus facilement et d'éviter un certain nombre d'erreurs.

    http://sametmax.com/les-critiques-des-orm-sont-a-cote-de-la-plaque/ (note : le slogan du blog est « du code, du cul » et ça peut être très explicite…)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.