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

Bibliothèques tierces Python Discussion :

[MySQL] Une sorte de flush?


Sujet :

Bibliothèques tierces Python

  1. #1
    Membre expérimenté
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    946
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 946
    Points : 1 351
    Points
    1 351
    Par défaut [MySQL] Une sorte de flush?
    Salut,

    Je crée une base de donnéees avec les script ci dessous:

    Code user_root.py : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    DB_USER = "root"
    DB_PASSWD = ""
     
    DB_HOST = "localhost"
    DB_ADMIN = "mysql"
    DB_SENSOR = "sensors"
    DB_TBL_SENSOR = "sensor"
    DB_TBL_DATA = "data"
    DB_TBL_VARTYPE = "vartype"
    DB_TBL_VARIABLE = "variable"

    Code create_tables.py : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
     
    import canOpen
    import MySQLdb 
    from user_root import*
     
    con = MySQLdb .connect(host=DB_HOST, db=DB_ADMIN, user=DB_USER, passwd=DB_PASSWD)
    cursor = con.cursor()
    sql = 'CREATE DATABASE %s'%DB_SENSOR
    try:
        cursor.execute(sql)
    except:
        pass
    con = MySQLdb .connect(host=DB_HOST, db=DB_SENSOR, user=DB_USER, passwd=DB_PASSWD)
    cur = con.cursor()
    cur.execute("CREATE TABLE IF NOT EXISTS %s(recnum INT PRIMARY KEY AUTO_INCREMENT, value_str VARCHAR(15), timestamp INT, variable_recnum INT)"%DB_TBL_DATA)
    cur.execute("CREATE TABLE IF NOT EXISTS %s(recnum INT PRIMARY KEY AUTO_INCREMENT, label VARCHAR(31))"%DB_TBL_SENSOR)
    cur.execute("CREATE TABLE IF NOT EXISTS %s(recnum INT PRIMARY KEY AUTO_INCREMENT, label VARCHAR(31), canopen_objname VARCHAR(11), vartype_recnum INT, sensor_recnum INT)"%DB_TBL_VARIABLE)
    cur.execute("CREATE TABLE IF NOT EXISTS %s(recnum INT PRIMARY KEY AUTO_INCREMENT, label VARCHAR(31), canopen_index INT)"%DB_TBL_VARTYPE)
    for record in [("INT8", canOpen.CO_DATA_TYPE_INTEGER8),
                    ("INT16", canOpen.CO_DATA_TYPE_INTEGER16),
                    ("INT32", canOpen.CO_DATA_TYPE_INTEGER32),
                    ("UINT8", canOpen.CO_DATA_TYPE_UNSIGNED8),
                    ("UINT16", canOpen.CO_DATA_TYPE_UNSIGNED16),
                    ("UINT32", canOpen.CO_DATA_TYPE_UNSIGNED32),
                    ("FLOAT32", canOpen.CO_DATA_TYPE_REAL32)]:
        query = "INSERT INTO %s(label, canopen_index) VALUES('%s', %u)"%(DB_TBL_VARTYPE, record[0], record[1])
        print query
        cur.execute(query)
     
    query = "SELECT * FROM %s WHERE 1"%(DB_TBL_VARTYPE)
    print query
    cur.execute(query)
    rows = cur.fetchall()
    print rows
    for row in rows:
        print row
    con.close()

    Mais quand j'essaie de relire les enregistrements de la table vartype avec le script ci dessus il n'y a rien... Quelqu'un saurait pourquoi? D'ailleurs mySqlAdmin a le même comportement, il ne voit pas les enregistrements...

    Code sample_mysql.py : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
     
    import canOpen
    import MySQLdb 
    from user_root import*
     
    con = MySQLdb .connect(host=DB_HOST, db=DB_SENSOR, user=DB_USER, passwd=DB_PASSWD)
    cur = con.cursor()
    query = "SELECT * FROM %s WHERE 1"%(DB_TBL_VARTYPE)
    print query
    cur.execute(query)
    rows = cur.fetchall()
    print rows
    for row in rows:
        print row

    A+

    Pfeuh

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Cela manque de "commit".
    Comme la DBAPI est laxiste, les drivers pour les différents SGDB ont des comportements différents et il faut lire la doc. et tester à chaque fois.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Il y a longtemps que je n'ai pas travaillé avec mysql, mais je ne vois pas de "commit". Quand je l'oublie avec d'autres sgbd, l'écriture n'a pas lieu. A moins que mysql soit en "autocommit" par défaut?

    [grillé par wiztricks]
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  4. #4
    Membre expérimenté
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    946
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 946
    Points : 1 351
    Points
    1 351
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,

    Cela manque de "commit".
    Comme la DBAPI est laxiste, les drivers pour les différents SGDB ont des comportements différents et il faut lire la doc. et tester à chaque fois.
    - W
    merci Wiztricks, tu es trop fort! C'est exactement le genre de truc que je pressentais. Il m'aurait fallu un temps fou pour le trouver. Je l'ai rajouté à la ligne 31 de create_tables.py

    A+

    Pfeuh

    Et merci Tyrtamos aussi.

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

Discussions similaires

  1. [MySQL] Une requête n'aboutissant pas
    Par Livingstone dans le forum Langage SQL
    Réponses: 6
    Dernier message: 13/02/2006, 10h36
  2. [VB+MySql]Une seule connexion à ma Bdd...
    Par Deejoh dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 28/01/2006, 11h08
  3. Une sorte de planning (leger) en etât ou formulaire
    Par wulfgar57 dans le forum Access
    Réponses: 2
    Dernier message: 09/12/2005, 18h52
  4. Gestion OnChange sur une sorte d'éditeur de propriétés
    Par Clorish dans le forum Composants VCL
    Réponses: 8
    Dernier message: 29/09/2004, 09h59

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