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 :

Installer web.py (windows)


Sujet :

Python

  1. #21
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 24
    Points : 8
    Points
    8
    Par défaut
    Je viens de voir vos réponses (merci), mais j'ai réussi à résoudre le problème seul hier avec un peu de logique, je vous post ce que j'ai fais

    un exemple :

    ip = ([ip for ip in socket.gethostbyname_ex(socket.gethostname())[2] if not ip.startswith("127.")][0])
    ipbdd = 'INSERT INTO serveur(ip) VALUES("' + str(ip) + '")'
    cur.execute (ipbdd)
    conn.commit()

    je sais pas si c'est propre ou pas, mais ça marche. En revanche on viens de me dire que je dois m'orienter vers du mysql, donc je vais devoir faire quelque changement...

  2. #22
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Points : 1 658
    Points
    1 658
    Par défaut
    Et c'est avec quelle DB la syntaxe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'INSERT INTO serveur(ip) VALUES("' + str(ip) + '")'
    ?

  3. #23
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par eyquem Voir le message
    Et c'est avec quelle DB la syntaxe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'INSERT INTO serveur(ip) VALUES("' + str(ip) + '")'
    ?
    Hmm, bon d'accord c'est un exemple et çà marche peut être satisfaisant même si "porter", lisibilité ont été négligés.
    En plus, il est quand même plus sympa de montrer un code complet!

    Code : 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
    import sqlite3
    from socket import gethostname, gethostbyname_ex
     
    con = sqlite3.connect(":memory:")
    cur = con.cursor()
    cur.executescript("""
        create table host_addresses(
            ip
        );""")
     
    insert_stmt = 'INSERT INTO %(table)s VALUES(?)' % dict(table="host_addresses")
    fetchall_stmt = 'SELECT * FROM %(table)s' % dict(table="host_addresses")
     
    ip = gethostbyname_ex(gethostname())[2][0]
    if not ip.startswith("127."):
        cur.execute(insert_stmt, (ip,))
        con.commit()
     
    cur.execute(fetchall_stmt)
    rows = cur.fetchall()
    for item in rows:
        print item
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #24
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 24
    Points : 8
    Points
    8
    Par défaut
    Code : 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
    #Importation des modules
    import socket, win32api, win32con, sqlite3, os
     
    #Detail des modules
    #socket : pour afficher l'ip
    #win32api et win32con : pour aller afficher la clef de registre
    #
    #Creation de la BDD nb pr dvp.com : pour l'instant c'est en local mais la base doit être mise sur un serveur mysql (oui je sais c'est du sqlite ça)
    datafile ="C:/pyth/prod.sq3"
    conn =sqlite3.connect(datafile)
    cur =conn.cursor()
    cur.execute("CREATE TABLE serveur (ip VARCHAR(100),versionWin VARCHAR(100),versionSecu VARCHAR (100))")
    #
    #Recuperation de l'adresse ip
    ip = ([ip for ip in socket.gethostbyname_ex(socket.gethostname())[2] if not ip.startswith("127.")][0])
    ipbdd = 'INSERT INTO serveur(ip) VALUES("' + str(ip) + '")'
    cur.execute (ipbdd)
    conn.commit()

  5. #25
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 24
    Points : 8
    Points
    8
    Par défaut
    Bon, j'ai modifié mon script pour du Mysql et ça marche nickel. J'ai une petite question, est ce qu'un module 32bit marchera sur du 64 bit (une fois compilé) car je bosse en 32 bit mais le script sera mis en route sur un serveur 64 bit.

    Merci beaucoup, après j'arrête avec mes questions, promis


    Enfait ça marche pas si bien que ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #-----------------------------
    #Recuperation de l'adresse ip
    #-----------------------------
    ip = ([ip for ip in socket.gethostbyname_ex(socket.gethostname())[2] if not ip.startswith("127.")][0])
    ipbdd = 'INSERT INTO serveur(ip) VALUES("' + str(ip) + '")'
    db_link.query (ipbdd)
     
    #----------------------------------------------------------------------------
    #Lecture de la clef de registre qui renseigne la version de windows courante
    #----------------------------------------------------------------------------
    regkey = win32api.RegOpenKeyEx( win32con.HKEY_LOCAL_MACHINE, 'SOFTWARE\\Microsoft\\WINDOWS NT\\CurrentVersion', 0, win32con.KEY_READ )
    (value,keytype) = win32api.RegQueryValueEx(regkey, 'BuildLab' )
    verbdd = 'INSERT INTO serveur(versionWin) VALUES("' + str(value,keytype) + '")'
    db_link.query (verbdd)
    Je n'ai quel'ip dans ma bdd quand je la consulte
    Je dois faire un db_link.query 'mot clef pour envoyer les données' mais le commit marche pas :/

  6. #26
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par Gregzz Voir le message
    Bon, j'ai modifié mon script pour du Mysql et ça marche nickel. J'ai une petite question, est ce qu'un module 32bit marchera sur du 64 bit (une fois compilé) car je bosse en 32 bit mais le script sera mis en route sur un serveur 64 bit.
    Python étant un langage interprété, sauf cas très particulier un script python est portable. Le .pyc peut être fonction de la version de Python.
    Certains "compilent" lorsqu'ils freeze une application en un .exe incluant interpréteur etc... Dans ce cas, il y a des précautions à prendre mais çà dépend de l'utilitaire utilisé, ....

    Merci beaucoup, après j'arrête avec mes questions, promis
    Ah ben non, dès fois qu'on s'ennuierait ensuite...

    Enfait ça marche pas si bien que ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #-----------------------------
    #Recuperation de l'adresse ip
    #-----------------------------
    ip = ([ip for ip in socket.gethostbyname_ex(socket.gethostname())[2] if not ip.startswith("127.")][0])
    ipbdd = 'INSERT INTO serveur(ip) VALUES("' + str(ip) + '")'
    db_link.query (ipbdd)
     
    #----------------------------------------------------------------------------
    #Lecture de la clef de registre qui renseigne la version de windows courante
    #----------------------------------------------------------------------------
    regkey = win32api.RegOpenKeyEx( win32con.HKEY_LOCAL_MACHINE, 'SOFTWARE\\Microsoft\\WINDOWS NT\\CurrentVersion', 0, win32con.KEY_READ )
    (value,keytype) = win32api.RegQueryValueEx(regkey, 'BuildLab' )
    verbdd = 'INSERT INTO serveur(versionWin) VALUES("' + str(value,keytype) + '")'
    db_link.query (verbdd)
    Même remarque que précédemment: un code qu'on peut copier&coller pour voir comment çà marche, c'est mieux!
    D'autant que "db_link.query" n'est plus DBAPI "standard" et sans indication sur ce que c'est impossible que quelqu'un puisse dire 'ah oui çà je connais, il faut faire comme çà'.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #27
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 24
    Points : 8
    Points
    8
    Par défaut
    Arf excuse moi alors, fin le soucy ne concerne que la requête sql, je sais le faire en php/sql mais là je bloque.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    import socket, win32api, win32con, os, MySQLdb
    db_link=MySQLdb.connect(
                            host="******",
                            user="python",
                            passwd="python",
                            db="python")
     
    ip = ([ip for ip in socket.gethostbyname_ex(socket.gethostname())[2] if not ip.startswith("127.")][0])
    regkey = win32api.RegOpenKeyEx( win32con.HKEY_LOCAL_MACHINE, 'SOFTWARE\\Microsoft\\WINDOWS NT\\CurrentVersion', 0, win32con.KEY_READ )
    (value,keytype) = win32api.RegQueryValueEx(regkey, 'BuildLab' )
    uptime = (os.popen('uptime','r').readlines())
     
    putinbdd = 'INSERT INTO serveur(ip,versionWin,versionSecu,uptime) VALUES("' + str(ip) + ',' + str(value,keytype',' + str(uptime) + '")'
    db_link.query (putinbdd)

    Voilà comment je l'aurais fait en php si ça peut aider :

    Code : 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
     
    import socket, win32api, win32con, os, MySQLdb
    db_link=MySQLdb.connect(
                            host="******",
                            user="python",
                            passwd="python",
                            db="python")
     
    ip = ([ip for ip in socket.gethostbyname_ex(socket.gethostname())[2] if not ip.startswith("127.")][0])
    regkey = win32api.RegOpenKeyEx( win32con.HKEY_LOCAL_MACHINE, 'SOFTWARE\\Microsoft\\WINDOWS NT\\CurrentVersion', 0, win32con.KEY_READ )
    (value,keytype) = win32api.RegQueryValueEx(regkey, 'BuildLab' )
    uptime = (os.popen('uptime','r').readlines())
     
    putinbdd = "INSERT INTO serveur (
                                    'ip', 
                                    'versionWin', 
                                    'versionSecu', 
                                    'uptime'
                                    ) 
                                    VALUES 
                                    (
                                    '" . str(ip) . "',
                                    '" . str(value,keytype) . "', 
                                    '" . str(uptime) . "'
                                    )"
    db_link.query (putinbdd)

    Je sais qu'il manque une des fct mais je suis encore dessus donc quand j'essayais je remplaçais par une valeur existante déjà

  8. #28
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,
    Pas le temps de regarder dans les détails maintenant mais à vue de pif:
    1 - on veut insérer 4 valeurs dans la table serveur, le template d'insert statement pourrait être:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    insert_stmt = 'INSERT INTO %(table)s VALUES(?, ?, ?, ?)' % dict(table="serveur")
    2 - On exécute ensuite ce "statement" en le passant en paramètre à cur.execute avec la valeur des variables dans un uplet:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cur.execute(insert_stmt, (ip,versionWin,versionSecu,uptime))
    3 - Je ne sais pas si on peut mettre autre chose dans query que des "SELECT...": alors qu'on peut mettre ce qu'on veut dans execute...
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  9. #29
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 24
    Points : 8
    Points
    8
    Par défaut
    J'ai essayé avec ta méthode, mais cela n'a rien donné. Je me demande bien si ce que je demande est possible en python, parce qu'après avoir essayé toutes les combinaisons logique de ' de , et de " rien ne marche, je perd espoir :/

  10. #30
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,
    Citation Envoyé par Gregzz Voir le message
    J'ai essayé avec ta méthode, mais cela n'a rien donné. Je me demande bien si ce que je demande est possible en python, parce qu'après avoir essayé toutes les combinaisons logique de ' de , et de " rien ne marche, je perd espoir :/
    Hmmm depuis le XIIIème s. on dit: « Mauvais ouvrier ne trouve jamais bon outil »
    Montre ton code au lieu d'espérer!
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  11. #31
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 24
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,


    Hmmm depuis le XIIIème s. on dit: « Mauvais ouvrier ne trouve jamais bon outil »
    Montre ton code au lieu d'espérer!
    - W

    Euh, mon code est dans le post un peu plus haut, je comprend pas ce que tu veux de plus .


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    import socket, win32api, win32con, os, MySQLdb
    db_link=MySQLdb.connect(
                            host="******",
                            user="python",
                            passwd="python",
                            db="python")
     
    ip = ([ip for ip in socket.gethostbyname_ex(socket.gethostname())[2] if not ip.startswith("127.")][0])
    regkey = win32api.RegOpenKeyEx( win32con.HKEY_LOCAL_MACHINE, 'SOFTWARE\\Microsoft\\WINDOWS NT\\CurrentVersion', 0, win32con.KEY_READ )
    (value,keytype) = win32api.RegQueryValueEx(regkey, 'BuildLab' )
    uptime = (os.popen('uptime','r').readlines())
     
    putinbdd = 'INSERT INTO serveur(ip,versionWin,versionSecu,uptime) VALUES("' + str(ip) + ',' + str(value,keytype)',' + str(uptime) + '")'
    db_link.query (putinbdd)


    Edit : Je viens de trouver le problème, j'ai rectifié ma requete SQL, et je me suis aperçu après quelques essais que le soucis viens de mes valeur, en effet je les ai pas parser et elles contiennent des caractères qui sont mal interpréter :

    la fonction uptime
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    uptime = (os.popen('uptime','r').readlines())
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ['\\\\Nomdelamachine has been up for: 0 day(s), 2 hour(s), 2 minute(s), 7 second(s)\n']
    Le soucis vient donc des antislash et des '

    la fonction qui me renvoie la version de windows me renvoie

    ('2600.xpsp_sp3_gdr.100216-1514', 1)

    Je suppose que les parenthèse et le ,1 font déconner tout le truc.

    Maintenant que le problème est identifié je vais pouvoir essayer de le résoudre...

  12. #32
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    La chose:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    putinbdd = 'INSERT INTO serveur(ip,versionWin,versionSecu,uptime) VALUES("' + str(ip) + ',' + str(value,keytype)',' + str(uptime) + '")'
    n'est pas bien construite.

    Je vous ai proposé de passer par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    insert_stmt = 'INSERT INTO serveur VALUES(?, ?, ?, ?)'
    cur.execute(insert_stmt, (ip,versionWin,versionSecu,uptime))
    Après, c'est vous qui voyez.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  13. #33
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 24
    Points : 8
    Points
    8
    Par défaut
    C'est peut être pas bien construit mais ça marche, enfin pour les valeur sans signes qui viennent foutre le souk.

    Quand j'essaye avec votre méthode voilà ce que j'obtiens,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Traceback (most recent call last):
      File "<pyshell#16>", line 1, in <module>
        cur.execute(insert_stmt, ("'+ str(ip) +'" , "'+ str(value) +'","'+ ip +'","'+ uptime +'"))
      File "C:\Python26\Lib\site-packages\MySQLdb\cursors.py", line 158, in execute
        query = query % db.literal(args)
    TypeError: not all arguments converted during string formatting
    Après j'ai compris qu'il fallait que je mettent des % mais après quelques essais j'ai pas compris comment. J'ai essayé de m'inspiré de ce bout de code, mais sans succès
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    query = "insert into ans_client_events (home_url,href_url,event,random_qs,ip,path_info,query_string,request_uri,http_referer,event_datetime) values('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')" % (home_url,PATH_INFO,event,random_qs,ip,PATH_INFO,QUERY_STRING,REQUEST_URI,HTTP_REFERER,dt)
    results = db.query(query)

  14. #34
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Dans la forme que je vous ai proposé:

    cur.execute(insert_stmt, (ip,versionWin,versionSecu,uptime))

    ressemble-t-elle à:

    ("'+ str(ip) +'" , "'+ str(value) +'","'+ ip +'","'+ uptime +'"))

    qui par ailleurs passe à cur.execute un uplet de 4 chaines de caractères "constantes": "'+ str(ip) +'" n'étant rien d'autre que la chaine de caractères '+ str(ip) +'.

    L'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    File "C:\Python26\Lib\site-packages\MySQLdb\cursors.py", line 158, in execute
        query = query % db.literal(args)
    TypeError: not all arguments converted during string formatting
    Laisse penser que le nombre ou le type des arguments ne sont pas cohérents avec:
    - la déclaration de la table... combien de colonnes? leur type?
    - le nombre de "?" déclarés dans VALUES d'insert_stmt.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  15. #35
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 24
    Points : 8
    Points
    8
    Par défaut
    J'ai dit que j'avais testé selon votre méthode, voici le message d'erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Traceback (most recent call last):
      File "<pyshell#10>", line 1, in <module>
        cur.execute(insert_stmt, (ip,ip,ip,ip))
      File "C:\Python26\Lib\site-packages\MySQLdb\cursors.py", line 158, in execute
        query = query % db.literal(args)
    TypeError: not all arguments converted during string formatting
    Voila pourquoi j'ai essayé avec les ' et "

  16. #36
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Essayez avec ce format: il semble que MySQL n'aime que les passages de paramètre "à la mode C".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    insert_stmt = """
    INSERT INTO serveur(ip,versionWin,versionSecu,uptime)
    VALUES(%s, %s, %s, %s)"""
    cur.execute(insert_stmt, (ip,versionWin,versionSecu,uptime))
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  17. #37
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 24
    Points : 8
    Points
    8
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    raceback (most recent call last):
      File "<pyshell#39>", line 1, in <module>
        cur.execute(insert_stmt, (ip,ip,value,uptime))
      File "C:\Python26\Lib\site-packages\MySQLdb\cursors.py", line 173, in execute
        self.errorhandler(self, exc, value)
      File "C:\Python26\Lib\site-packages\MySQLdb\connections.py", line 36, in defaulterrorhandler
        raise errorclass, errorvalue
    ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '))' at line 2")

    Mais le problème vient de mes données comme je l'ai précisé plus haut...

  18. #38
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,
    Bon ca avance.
    La question sur les données se pose car je vous ai fait enlever le "str", mais l'erreur remontée vient de "plus bas": lorsque le driver essaie de convertir les données que vous lui expédiez dans le format attendu.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  19. #39
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 24
    Points : 8
    Points
    8
    Par défaut
    C'est les données uptime (['\\\\Nomdelamachine has been up for: 0 day(s), 2 hour(s), 2 minute(s), 7 second(s)\n']) et versionwin (à cause du ,1) qui font tout foirer comme précisé plus haut.

    La question que je me pose, est-ce que je peux directement enlever les caractères 'nocifs' avec une fonction python, ou est ce qu'il faut que j'enregistre les données dans un fichier (bordélique à l'usage) pour ensuite les modifier. Mon chef me dit de parser tout ça mais j'ai pas trop pigé, je trouve pas grand chose sur google :/.

  20. #40
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Tout dépend de la nature des informations que vous voulez traiter "en base".
    La BD râle car elle reçoit un tuple et un list alors qu'elle attend des "strings"
    Si vous remettez str, çà devrait "marcher".

    Comme toujours, le chef à raison... stocker les données telles que reçues générera du boulot "plus tard" quand il s'agira de les exploiter...
    Reste à définir:
    - quelles sont les informations que vous voulez?
    - comment les récupérer?
    - sous quel format les stocker?
    Et s'assurer que c'est cohérent avec l'usage pourrez en avoir. i.e. définir les cas d'utilisation...

    Exemples:
    - Une adresse IPv4 est d'abord un entier 32bits. la forme a.b.c.d n'est qu'une représentation sous forme texte et de longueur variable.
    Dans la BDD vous pourriez la stocker sous la forme d'un entier, ce sera quand même plus pratique pour faire les comparaisons.

    - Pourquoi aller taper dans la registry alors qu'il existe une fonction portable uname dans la bibliothèque platform qui retourne 'assez' d'infos indépendamment de l'OS?

    - uptime? C'est le nombre de secondes depuis le dernier boot. Comment allez vous pouvoir exploiter cette information? Une fois stockée en base, sa valeur ne sera plus mise à jour: lorsqu'on va consulter la base, çà dira tout le temps "la bécane truc à booté depuis 2 jours".
    Ne serait-il pas plus judicieux de stocker la date (timestamp UTC) du dernier boot et la date de mise à jour de l'entrée dans la base... - pour savoir si l'info est récente...

    Bon courage.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Comment installer GMP sous Windows?
    Par Vinchol dans le forum Autres éditeurs
    Réponses: 9
    Dernier message: 13/07/2006, 10h05
  2. install 10g sous windows NT4
    Par james_usus dans le forum Installation
    Réponses: 44
    Dernier message: 03/01/2005, 22h22
  3. installer boost sous windows
    Par bigboomshakala dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 16/12/2004, 15h59
  4. [PostGres] Problème installation PostGres sous Windows
    Par Torpille dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 27/08/2004, 16h05
  5. Quelqu'un a-t-il déjà installé sapdb sous Windows
    Par vanquish dans le forum Autres SGBD
    Réponses: 6
    Dernier message: 05/12/2002, 16h44

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