2010-09-06 7 views
1

J'essaie d'insérer des données dans une base de données MySQL locale en utilisant MySQL Connector/Python - apparemment le seul moyen d'intégrer MySQL dans Python 3 sans casser le compilateur C.DB-API avec Python

J'ai essayé tous les exemples fournis avec le paquet; Ceux qui exécutent peuvent entrer des données très bien. Malheureusement, mes tentatives d'écrire quoi que ce soit dans mes tableaux échouent.

Voici mon code:

import mysql.connector 


def main(config): 
    db = mysql.connector.Connect(**config) 
    cursor = db.cursor() 

    stmt_drop = "DROP TABLE IF EXISTS urls" 
    cursor.execute(stmt_drop) 

    stmt_create = """ 
    CREATE TABLE urls (
     id TINYINT UNSIGNED NOT NULL AUTO_INCREMENT, 
     str VARCHAR(50) DEFAULT '' NOT NULL, 
     PRIMARY KEY (id) 
    ) CHARACTER SET 'utf8'""" 
    cursor.execute(stmt_create) 

    cursor.execute (""" 
     INSERT INTO urls (str) 
     VALUES 
     ('reptile'), 
     ('amphibian'), 
     ('fish'), 
     ('mammal') 
     """) 
    print("Number of rows inserted: %d" % cursor.rowcount) 
    db.close() 
if __name__ == '__main__': 
    import config 
    config = config.Config.dbinfo().copy() 
    main(config) 

SORTIE:

Nombre de lignes insérées: 4

J'oriente mon code strictement sur ce qui m'a été donné dans les exemples et ne peux pas, pour la vie de la mienne, comprendre quel est le problème. Qu'est-ce que je fais mal ici?

Récupérer des données de table avec le script fonctionne très bien, donc je ne m'inquiète pas pour les fichiers de configuration. Je suis root sur la base de données donc les droits ne devraient pas poser de problème non plus.

+0

Comment voulez-vous dire qu'il échoue? Selon votre sortie, si c'est exact, les opérations se sont terminées avec succès, pour autant que python puisse le dire. –

+0

Désolé, apparemment je n'étais pas clair à ce sujet. Il n'y a pas d'entrées dans ma table test.url une fois l'opération terminée. –

Répondre

5

Vous devez ajouter un db.commit() pour valider vos modifications avant vous db.close()!

+0

Vous êtes mon héros Alex. Merci un million. –