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 :

ERREUR Error binding parameter 2 - probably unsupported type [Python 3.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de lagratteCchouette
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 198
    Par défaut ERREUR Error binding parameter 2 - probably unsupported type
    Bonjour,

    Pourriez-vous s'il vous plaît m'aider...
    Je suis dans la création d'une base de donnée afin d’enregistrer des citations.
    Je ne comprends pas car cela marche bien avec les auteurs mais pas avec les citations.
    Et j'ai donc le message suivant qui me fait mal à la tête :

    ERREUR Error binding parameter 2 - probably unsupported type
    Voici mes commandes qui sont connectées avec le => from main_sql import *

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    # -*- coding: utf-8 -*-
     
    from tkinter import*
    import tkinter as tk
     
    from main_sql import*# syntaxe pour appeller un autre fichier py + fonction
     
    from tkinter import font
    from PIL import Image, ImageTk # module image
     
     
    classHoverButton(tk.Button):
    def__init__(self, master, **kw):
            tk.Button.__init__(self,master=master,**kw)
    self.defaultBackground =self["background"]
    self.bind("<Enter>", self.on_enter)
    self.bind("<Leave>", self.on_leave)
     
    defon_enter(self, e):
    self["background"] =self["activebackground"]
     
    defon_leave(self, e):
    self["background"] =self.defaultBackground
     
     
     
    defrunauteur():
    global boutonEnregistrer
        toplevelAuteur = Toplevel()  #== Contructeur Toplevel ==
        toplevelAuteur.title(" Bienvenue dans la saisie des auteurs")
        screen_x =int(toplevelAuteur.winfo_screenwidth())
        screen_y =int(toplevelAuteur.winfo_screenheight())
        toplevelAuteur_x =1260
        toplevelAuteur_y =720
        pos_x = (screen_x //2) - (toplevelAuteur_x //2)
        pos_y = (screen_y //2) - (toplevelAuteur_y //2)
        geo ="{}x{}+{}+{}".format(toplevelAuteur_x, toplevelAuteur_y, pos_x, pos_y)
        toplevelAuteur.geometry(geo)
        toplevelAuteur.resizable(width=False,height=False) # Fenêtre modifiable True or False
        toplevelAuteur.configure(bg='Gray79')
        labelAuteur = Label(toplevelAuteur, text="Auteur",bg='Gray79', font=("Arial", 12,"bold"))
        labelAuteur.place(x=30,y=38)
        entreeAuteur = Entry (toplevelAuteur, width="50",font=("Arial", 12,"bold"))
        entreeAuteur.place(x=30,y=65)
        labelInfo = Label(toplevelAuteur, text="Information",bg='Gray79', font=("Arial", 12,"bold"))
        labelInfo.place(x=30,y=100)
        entreeInfo = Text(toplevelAuteur, width="149", height="30")
        entreeInfo.place(x=30,y=127)
        boutonEnregistrer = HoverButton(toplevelAuteur, text='Enregistrer', activebackground="SkyBlue1", command=lambda : enregisterAuteur(entreeAuteur.get(), entreeInfo.get('1.0', END)))  
        boutonEnregistrer.pack(side=BOTTOM, anchor=SE, padx=20, pady=20) #boutonEnregistrer.place(x=700,y=400)
     
     
     
     
    defruncitation():
    global boutonEnregistrer
        toplevelCitation = Toplevel()  #== Contructeur Toplevel ==
        toplevelCitation.title(" Bienvenue dans la saisie des citations")
        screen_x =int(toplevelCitation.winfo_screenwidth())
        screen_y =int(toplevelCitation.winfo_screenheight())
        toplevelCitation_x =1260
        toplevelCitation_y =720
        pos_x = (screen_x //2) - (toplevelCitation_x //2)
        pos_y = (screen_y //2) - (toplevelCitation_y //2)
        geo ="{}x{}+{}+{}".format(toplevelCitation_x, toplevelCitation_y, pos_x, pos_y)
        toplevelCitation.geometry(geo)
        toplevelCitation.resizable(width=False,height=False) # Fenêtre modifiable True or False
        toplevelCitation.configure(bg='lightblue3')
        labelCitation_Auteur = Label(toplevelCitation, text="Auteur",bg='lightblue3', font=("Arial", 12,"bold"))
        labelCitation_Auteur.place(x=30,y=38)
        entreeCitation_Auteur  = Entry (toplevelCitation, width="50",font=("Arial", 12,"bold"))
        entreeCitation_Auteur .place(x=30,y=65)
        labelCitation = Label(toplevelCitation, text="Citation",bg='lightblue3', font=("Arial", 12,"bold"))
        labelCitation.place(x=30,y=100)
        entreeCitation = Text(toplevelCitation, width="149", height="28")
        entreeCitation.place(x=30,y=127)
        labelReference = Label(toplevelCitation, text="Référence",bg='lightblue3', font=("Arial", 12,"bold"))
        labelReference.place(x=30,y=593)
        entreeReference = Text(toplevelCitation, width="149", height="1")
        entreeReference.place(x=30,y=620)
     
        boutonEnregistrer_citation = Button(toplevelCitation, text='Enregistrer', command=lambda : enregisterCitation(entreeCitation_Auteur.get(), entreeCitation.get, entreeReference.get('1.0', END)))  
        boutonEnregistrer_citation.pack(side=BOTTOM, anchor=SE, padx=20, pady=20) #boutonEnregistrer.place(x=700,y=400)


    Mon code sqlite3 sur trouve dans ce fichier => main_sql
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    # -*- coding: utf-8 -*-
    import sqlite3
     
    #=================== Insertion des données dans database ================================================
    defenregisterAuteur(auteur_auteur, auteur_info):
     
    try:    
                connection = sqlite3.connect('mnesis.db') # Connection à la BdD
                cursor = connection.cursor() # création du curseur
    #création variable new_auteur
                new_auteur = (cursor.lastrowid, auteur_auteur, auteur_info) # Récupération des valeurs des boutons
                cursor.execute('INSERTINTO tb_auteur VALUES(?,?,?)',new_auteur) # les (?,?,?) représentent les valeurs qui sont renseignées dans la variable new_auteur 
     
    exceptExceptionas e:
    print("ERREUR",e)
                connection.rollback()
    finally:
                cursor.close()
                connection.commit() # Valider l'enregistrement dans la database
                connection.close() ## Fermeture de la connection
     
     
    #=================== Insertion des données dans database ================================================
    defenregisterCitation(citation_auteur, citation_citation,citation_reference):
     
    try:    
                connection = sqlite3.connect('mnesis.db') # Connection à la BdD
                cursor = connection.cursor() # création du curseur
    #création variable new_citation
                new_citation = (cursor.lastrowid, citation_auteur, citation_citation, citation_reference ) # Récupération des valeurs des boutons
                cursor.execute('INSERTINTO tb_citation VALUES(?,?,?,?)',new_citation) # les (?,?,?,?) représentent les valeurs qui sont renseignées dans la variable new_citation
     
    exceptExceptionas e:
    print("ERREUR",e)
                connection.rollback()
    finally:
                cursor.close()
                connection.commit() # Valider l'enregistrement dans la database
                connection.close() ## Fermeture de la connection

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 742
    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 742
    Par défaut
    Salut,

    Au pif (parce qu'on ne sait même pas la ligne qui est en erreur), le type de l'objet que vous passez à la requête n'est pas traduisible en type de la colonne/attribut du schéma de la table.

    A vous de vérifier que c'est cohérent.

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

  3. #3
    Membre confirmé Avatar de lagratteCchouette
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 198
    Par défaut Erreur SQL
    Merci pour votre retour,

    Pour mes tables voici leurs structures :

    Nom : BdD.JPG
Affichages : 519
Taille : 67,3 Ko

    mais j'ai vu que dans mon bouton "boutonEnregistrer_citation" pour "entreeCitation.get" il me manquait ()



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    [Running] python -u "c:\DevPython\menesis_database_projet-03\frontend.py"
      File "c:\DevPython\menesis_database_projet-03\frontend.py", line 77
        boutonEnregistrer_citation = Button(toplevelCitation, text='Enregistrer', command=lambda : enregisterCitation(entreeCitation_Auteur.get(), entreeCitation.get, entreeReference.get('1.0', END))))  
     
                                                                                                                                                                                                          ^
    SyntaxError: invalid syntax
    je l'ai donc rajouté

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        boutonEnregistrer_citation = Button(toplevelCitation, text='Enregistrer', command=lambda : enregisterCitation(entreeCitation_Auteur.get(), entreeCitation.get(), entreeReference.get('1.0', END)))  
        boutonEnregistrer_citation.pack(side=BOTTOM, anchor=SE, padx=20, pady=20) #boutonEnregistrer.place(x=700,y=400)
    Et voici le message d'erreur... Est-ce que cela pourrait venir de là ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    [Running] python -u "c:\DevPython\menesis_database_projet-03\frontend.py"
      File "c:\DevPython\menesis_database_projet-03\frontend.py", line 77
        boutonEnregistrer_citation = Button(toplevelCitation, text='Enregistrer', command=lambda : enregisterCitation(entreeCitation_Auteur.get(), entreeCitation.get(), entreeReference.get('1.0', END))))  
                                                                                                                                                                                                          ^
    SyntaxError: invalid syntax

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 742
    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 742
    Par défaut
    Attendez, on passe d'un message d'erreur dont on ne sait s'il a été corrigé ou pas à une erreur de syntaxe probablement du à un mauvais comptage des parenthèses ouvrantes/fermantes....
    C'est vous le programmeur...

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

  5. #5
    Membre confirmé Avatar de lagratteCchouette
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 198
    Par défaut Erreur SQL
    Merci pour votre retour, mais vous m'avez mis sur la piste.
    Je ne suis qu'un apprenti.

    Je ne sais pas pourquoi le message d'erreur a changé, mais quand je me suis penche sur la commande boutonEnregistrer_citation en rapport avec la structure de ma table, j'ai travaillé sur l'hypothèse du get en modifiant la syntaxe.
    Et vous avez raison votre dernière remarque m'a amené à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     boutonEnregistrer_citation = Button(toplevelCitation, text='Enregistrer', command=lambda : enregisterCitation(entreeCitation_Auteur.get(), entreeCitation.get('1.0', END), entreeReference.get('1.0', END)))
     
        boutonEnregistrer_citation.pack(side=BOTTOM, anchor=SE, padx=20, pady=20)
    J'avais oublié la syntaxe entreeCitation.get('1.0', END)
    Maintenant grâce à vous cela marche.
    merci beaucoup

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

Discussions similaires

  1. Erreur "entity for parameter binding cannot be null"
    Par angel.success dans le forum Java EE
    Réponses: 22
    Dernier message: 25/05/2012, 19h33
  2. Erreur avec binding: cast d'un objet de type MS.Internal.NamedObject
    Par Takumi dans le forum Windows Presentation Foundation
    Réponses: 8
    Dernier message: 13/07/2010, 18h14
  3. Réponses: 1
    Dernier message: 12/05/2009, 09h43
  4. Bind parameter
    Par syncope dans le forum Requêtes
    Réponses: 2
    Dernier message: 05/05/2006, 01h26
  5. Réponses: 2
    Dernier message: 31/01/2006, 14h31

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