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