IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Stocker des dates dans sqlite3: quel format?


Sujet :

Python

  1. #1
    Candidat au Club
    Inscrit en
    Mai 2007
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Stocker des dates dans sqlite3: quel format?
    Bonjour!
    Je réalise une base de données à l'aide de Sqlite3 dans laquelle je stocke des dates sur lesquelles je dois faire des différences .
    Je récupère ces infos à partir d'un fichier excel.
    J'ai lu la doc python concernant les adapteurs et j'ai fait l'exemple de la doc avec la base en mémoire qui fonctionne.
    Cependant quand je transpose l'exemple sur ma bdd et que j'exécute cette ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for l in lignes:
        l = datetime.date.timetuple(time.strptime(l ,"%Y/%m/%d"))
        curs.execute(ins,l)
    ins est la variable qui contient la requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'INSERT INTO test VALUES ('
    .
    Je récupère les dates au format string dans ma variable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     l:[u'ABC1234', '2007/03/28', '2008/08/20', '2008/10/22', '2008/09/08', '2008/10/07', '2009/01/20', '2008/11/19', '2009/01/05', '2008/12/02', '2009/02/18', '2009/03/11']
    j'ai ce type d'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Traceback (most recent call last):
      File "C:\studies\insertFromXl_Explicit_Headers_2.py", line 38, in <module>
        l = datetime.date.timetuple(time.strptime(l ,"%Y/%m/%d"))
      File "C:\Python25\lib\_strptime.py", line 307, in strptime
        found = format_regex.match(data_string)
    TypeError: expected string or buffer
    De quelle erreur s'agit il?
    Comment puis je entrer dans ma base le format de date correct.
    Merci pour vos lumières.

  2. #2
    Membre éclairé
    Avatar de parp1
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    829
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Mai 2005
    Messages : 829
    Points : 872
    Points
    872
    Par défaut
    il ya a deja ce type de probleme, et apparement les personnes concerné entraient les date au format dd/mm/yyyy.

    Fais une recherche. sur ce forum. Format Date devrait t"aider.
    [SIZE="2"]Dis moi qui tu suis, je te dirais qui je Hais!
    Heureux est l'étudiant, qui comme la rivière suit son cours sans sortir de son lit

    Mon premier Tutoriel


    A 80% des cas je résouts mon problème en rédigeant une nouvelle discussion, du coup je ne poste que 20% de mes problèmes...

  3. #3
    Membre expérimenté Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Points : 1 728
    Points
    1 728
    Par défaut
    Bonjour,

    Apparement, SQLite est très souple, voir permissif avec les types de données entrées dans les colonnes. cf Column Affinity.

    Tu peux donc decider du format que tu veux pour stocker tes dates, mais il faut les mettre au format texte ("2007/08/05" par exemple) ou integer (secondes ecoulées depuis epoch par exemple).
    "Etre conscient de la difficulté permet de l'éviter.."
    Lao-Tseu.

  4. #4
    Candidat au Club
    Inscrit en
    Mai 2007
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Merci à tous les deux pour vos réponses.http://www.developpez.net/forums/ima...lies/merci.png

    Voilà comment je m'y suis pris pour trouver une solution à mon pb. Il y en a surement de plus élégante, mais celle là marche.

    Je crée ma base de données en définissant les types de champs en spécifiant le type "date", comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ...../....
    con = sqlite.connect('test.db',detect_types=sqlite3.PARSE_DECLTYPES|PARSE_COLNAMES)
    ...../....
    Je récupère les données d'un fichier Excel, grâce au module xlrd qui retourne un tuple date complet:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tupledate=xlrd.xldate_as_tuple()
    dont je prend les trois premiers éléments (année,mois,jour)
    J'execute la requète sql 'INSERT' pour remplir la table de mon choix dans ma bdd. Les données dates sont alors stockées selon le type 'datetime.date':
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (u'ABCD', datetime.date(2006, 2, 2), datetime.date(2005, 5, 10))
    et peuvent être récupérées pour faire des calculs de différences ou de comparaison de dates.
    Voilà en gros.
    J'espère que c'est assez clair et que cela sera pourra être utile à d'autres.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Changer le format des dates dans une requête SQL
    Par Tazze-99 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 23/07/2012, 15h09
  2. [2.x] Format des dates dans un formulaire
    Par paul01 dans le forum Symfony
    Réponses: 20
    Dernier message: 18/09/2011, 15h05
  3. Forcer le format des dates dans une cellule
    Par cchampion2fr dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 01/10/2008, 13h20
  4. [MySQL] le format idéal pour stocker des dates avec l'heure
    Par Philoulheinz dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 17/02/2007, 21h53
  5. [VBA] Pb de format des dates dans un état
    Par linda15975 dans le forum IHM
    Réponses: 45
    Dernier message: 21/06/2005, 14h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo