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 :

connexion sqlite dans un IF


Sujet :

Python

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 210
    Par défaut connexion sqlite dans un IF
    Bonjour
    débutant en python
    je voudrais me connecter à la base de donnée sous condition, mais j ai des message d erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    if nomrecu != None :
        (
        connection = sqlite3.connect("base1.db")
        cursor = connection.cursor() 
        new_client = (cursor.lastrowid, nomrecu, prenomrecu, tel1recu, tel2recu, villerecu, codepostalrecu, pubrecu)
        cursor.execute('INSERT INTO clients VALUES (?,?,?,?,?,?,?,?)', new_client)
        connection.commit()
        connection.close())
        else :
            show_error()

    Message d erreur :
    Unresolved reference 'connection'[/CODE][CODE]Unresolved reference 'cursor'


    le même code sans if en haut de page ne pose aucun problème !
    et aussi le code import sqlite3 en début de page reste gris (pycharm) ce qui n est pas bon signe !

    merci de votre aide

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 830
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 830
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Les parenthèses au code sous le "if" m'intriguent. Je ne vois pas en quoi c'est mauvais mais je sens que ça l'est (et leur but m'échappe).
    Accessoirement on ne compare jamais avec None, car None n'est pas une valeur, c'est un état => if nomrecu is not None (mais ça n'a pas d'influence ici)
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 210
    Par défaut
    j ai tenter None parce que sinon j ai ce message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    name 'nomrecu' is not defined
    un formulaire dans le fenêtre 1 et récupération des variables en fenêtre 2

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 738
    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 738
    Par défaut
    Python aurait sorti NameError... et ajouter la comparaison à None ne change définira pas mieux la variable.
    De toutes façons, on ne saura résoudre que les problèmes qu'on sait reproduire. Or vous présentez des erreurs PyCharm et un code où python devrait sortir en SyntaxError (les parenthèses...)

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

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 830
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 830
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par bilcosby Voir le message
    j ai tenter None parce que sinon j ai ce message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    name 'nomrecu' is not defined
    Tu m'as mal compris
    Tu as le droit de comparer avec None mais en utilisant la bonne syntaxe (cf mon exemple).
    Et comme je l'ai dit, c'était juste pour ta culture mais ça n'a rien à voir avec ton problème principal qui vient (wiztricks l'a confirmé) des parenthèses.

    Exemple
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #!/usr/bin/env python3
    # coding: utf-8
     
    if True:
    	(a=123
    	print(a))
    Ce code donne une erreur sur a=123 là aussi à cause des parenthèses.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #6
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    @bilcosby,

    je voudrais me connecter à la base de donnée sous condition
    Vous avez probablement créer une fonction vous permettant de vous connecter selon ce paramètre nomrecu ?

    Le problème semble plus profond, et pas sûr que vous compreniez bien comment fonctionne une base de données (même si sqlite3 sort un peu des clous).
    Plusieurs connexions d'une même base de données sur un même processus est très coûteux, ce n'est pas recommandé !
    Aussi vous devriez séparer votre logique de connexion à la base de données et le traitement des données.

    Sur ce que j'ai pu comprendre, c'est l'insertion des données qui dépend du paramètre, pas la connexion (ouverte quoi qu'il arrive au démarrage de l'application et cette connexion sera fermée que quand l'application sera terminée).

  7. #7
    Membre éclairé
    Homme Profil pro
    autre
    Inscrit en
    Septembre 2015
    Messages
    418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Septembre 2015
    Messages : 418
    Par défaut
    Plusieurs connexions simultanées peuvent accroitre les performances globales, mais dans une certaine limite. Le framework Dream (serveur HTTP et d’application en Ocaml), propose par exemple la notion de pool. Si une fonction a besoin de la base de données, elle prendra une connexion du pool… et si tout et pris sera mis en attente. Cela permet d’éviter qu’une requête longue temporise trop des requêtes courtes en parallèle. Cela permet aussi d’éviter de saturer les connexions à la base qui sont limités (151 par défaut sur MariaDB… paramétrable).
    Le cas sqlite est particulier, lors d’une écriture l’ensemble du fichier est verrouillé. Les accès concurrence sont donc sérialisés.
    Mais effectivement, il vaut mieux limiter les connexions / déconnexions et avoir une connexion une fois pour toute. Tout l’overhead d’ouverture de la base est mutualisé.

  8. #8
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    @floyer,

    On est bien d'accord que son cas ne correspond pas à un système de pool de connexions ?

    Les accès concurrence sont donc sérialisés.
    Tu attises ma curiosité ! Sérialisés par ?

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 210
    Par défaut
    merci a vous tous
    j ai réglé le problème, J'ai bricolé les variables, parce qu'en fait j avais un bout de code qui était en dehors d une fonction , j ai réglé le message d erreur de la variable avec 'None' certes, mais pas d enregistrement dans la base de données et en cherchant le pourquoi, j ai trouvé.
    Et plus besoin de None !


    encore merci de votre aide, c'est super de vous avoir !

  10. #10
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 830
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 830
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par bilcosby Voir le message
    J'ai bricolé... j avais un bout de code qui était en dehors d une fonction... j ai réglé le message d erreur...
    Je n'ose pas imaginer le code

    Pas grave, tu finiras par comprendre

    Citation Envoyé par bilcosby Voir le message
    encore merci de votre aide, c'est super de vous avoir !
    Là suis d'accord. C'est super de nous avoir
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

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

Discussions similaires

  1. publier une connexion sql dans un project !
    Par coucoulido dans le forum Accès aux données
    Réponses: 3
    Dernier message: 26/02/2007, 12h12
  2. comment éviter de mettre sqlite dans le path de windows
    Par vivelesgnous dans le forum Général Python
    Réponses: 3
    Dernier message: 18/07/2006, 20h38
  3. Connexion root dans un script shell ou C
    Par arno29 dans le forum Linux
    Réponses: 6
    Dernier message: 20/06/2006, 16h24
  4. connexion ldap dans le livre jsp professionnel
    Par mjihanne dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 27/05/2006, 16h46
  5. [ADO] Connexion SQlite
    Par charliejo dans le forum C++Builder
    Réponses: 1
    Dernier message: 31/01/2006, 11h08

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