Bonjour,
je voudrais insérer des lignes automatiquement.
J'ai une erreur , je n'arrive pas à trouver la méthode pour insérer la valeur des variables.
Si je mets des chaines à la place des variables c'est OK.
Un peu d'aide SVP; Merci

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
import mysql.connector
import random
from mysql.connector import errorcode
 
DB_NAME = 'etude'
 
random.seed()
 
"""##################################################################"""
def creatable():
    """créer une table mysql  pour test insertion
* * """
    cnx = mysql.connector.connect(host = '127.0.0.1',
                                database = 'etude',
                                user = 'guy',
                                 password = 'bonjour')
 
 
 
    # crée un curseur pour la base ouverte
    cursor = cnx.cursor()
    # efface la table 'matable' si elle existe déjà
    cursor.execute("""DROP TABLE IF EXISTS matable""")
    # crée la table 'matable'
    cursor.execute('''CREATE TABLE `matable` 
                   (`num` INT UNSIGNED NOT NULL ,
                    `dig` char(6),
                    `nbf` int(10),
                    `mot` text
                    ) ENGINE=InnoDB ''')
 
    # remplit la table avec des données au hasard
    table= 'matable'
    try:
        for i in range(0, 100):
 
            _num = random.randint(1000, 9999)
            _dig = random.randint(0,1) #simulation d un booléen: 1=True 
            _nbf = random.random()
            _mot = 'abc' #creamot()
            print ('num', _num, 'dig', _dig, 'nbf', _nbf, 'mot', _mot)
            cursor.execute('''INSERT INTO `matable`(`num`,`dig`,`nbf`,`mot`)
                            VALUES(_num,_dig,_nbf,_mot)''') 
 
        cnx.commit()
    except mysql.connector.Error as err:
        cnx.rollback()
        print("erreur: %s" % (str(err.args[0]),))
    cursor.close()
    cnx.close()
"""###################################################################"""
if __name__ == '__main__':
 
    creatable()