Bonjour,
j'aimerais faire une petite application qui enregistre des données dans une base sqlite via une interface graphique.
Dès que je lance mon programme, j'initialise mes données et je souhaite que
SI la table examen n'est pas créée ALORS le programme l'écrit dans la base lombaire
SINON on passe à la suite...

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
 
import pygtk
pygtk.require("2.0")
import gtk
import gtk.glade
 
import sqlite3
 
 
class lombaire:
    def __init__(self):
        self.widgets = gtk.glade.XML('lombaire.glade',"window1")
        events = {'on_reg_clicked':self.enregistrer,'on_window1_delete_event':self.delete}
        self.widgets.signal_autoconnect(events)
        self.conn=sqlite3.connect('lombaire')
        self.cur=self.conn.cursor()
        try:
            self.cur.execute('CREATE TABLE examen (nom VARCHAR(50))')
        except IOError:
            print 'table déjà créée'
 
    def delete(self,source=None,event=None):
        gtk.main_quit()
 
    def enregistrer(self,source=None,event=None):
        '''self.truc=self.widgets.get_widget('entry1').get_text()
        print self.truc
        self.cur.execute("insert into examen (nom) values (?) ",self.truc)
        self.conn.commit()'''
        pass
 
if __name__ == '__main__':
    app=lombaire()
    gtk.main()
Voici le message d'erreur qui m'est renvoyé
Traceback (most recent call last):
File "lombaire.py", line 32, in <module>
app=lombaire()
File "lombaire.py", line 17, in __init__
self.cur.execute('CREATE TABLE examen (nom VARCHAR(50))')
sqlite3.OperationalError: table examen already exists
Mon fichier glade :
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
 
<?xml version="1.0"?>
<glade-interface>
  <!-- interface-requires gtk+ 2.16 -->
  <!-- interface-naming-policy project-wide -->
  <widget class="GtkWindow" id="window1">
    <property name="height_request">150</property>
    <property name="visible">True</property>
    <signal name="delete_event" handler="on_window1_delete_event"/>
    <child>
      <widget class="GtkVPaned" id="vpaned1">
        <property name="visible">True</property>
        <property name="can_focus">True</property>
        <child>
          <widget class="GtkHButtonBox" id="hbuttonbox1">
            <property name="visible">True</property>
            <child>
              <widget class="GtkButton" id="reg">
                <property name="label" translatable="yes">enregistrer</property>
                <property name="visible">True</property>
                <property name="can_focus">True</property>
                <property name="receives_default">True</property>
                <signal name="clicked" handler="on_reg_clicked"/>
              </widget>
              <packing>
                <property name="expand">False</property>
                <property name="fill">False</property>
                <property name="position">0</property>
              </packing>
            </child>
            <child>
              <widget class="GtkButton" id="button2">
                <property name="label" translatable="yes">button</property>
                <property name="visible">True</property>
                <property name="can_focus">True</property>
                <property name="receives_default">True</property>
              </widget>
              <packing>
                <property name="expand">False</property>
                <property name="fill">False</property>
                <property name="position">1</property>
              </packing>
            </child>
            <child>
              <widget class="GtkButton" id="button3">
                <property name="label" translatable="yes">button</property>
                <property name="visible">True</property>
                <property name="can_focus">True</property>
                <property name="receives_default">True</property>
              </widget>
              <packing>
                <property name="expand">False</property>
                <property name="fill">False</property>
                <property name="position">2</property>
              </packing>
            </child>
          </widget>
          <packing>
            <property name="resize">False</property>
            <property name="shrink">True</property>
          </packing>
        </child>
        <child>
          <widget class="GtkLayout" id="layout1">
            <property name="visible">True</property>
            <child>
              <widget class="GtkLabel" id="nom">
                <property name="width_request">100</property>
                <property name="height_request">80</property>
                <property name="visible">True</property>
                <property name="label" translatable="yes">Nom</property>
              </widget>
              <packing>
                <property name="x">17</property>
                <property name="y">42</property>
              </packing>
            </child>
            <child>
              <widget class="GtkEntry" id="entry1">
                <property name="width_request">100</property>
                <property name="height_request">30</property>
                <property name="visible">True</property>
                <property name="can_focus">True</property>
                <property name="invisible_char">&#x25CF;</property>
              </widget>
              <packing>
                <property name="x">100</property>
                <property name="y">60</property>
              </packing>
            </child>
          </widget>
          <packing>
            <property name="resize">True</property>
            <property name="shrink">True</property>
          </packing>
        </child>
      </widget>
    </child>
  </widget>
</glade-interface>