English

Adaptateur MySQL

La seule différence avec le module en pur Python est la syntaxe pour identifier une Base et la nécessité de spécifier le type des champs quand on crée une base

Pour rester compatible avec le vocabulaire de MySQL, le module définit trois classes, Connection, Database et Table

Connection(hote,identifiant,mot_de_passe) : renvoie une connectin au serveur MySQL

Les instances de Connection supportent 2 méthodes :

  • databases() : renvoie la liste des noms de bases de données
  • create(nom_bdd) : crée une base de données appelée nom_bdd et renvoie l'instance de la classe Database

Database(nom_bdd, connection) : renvoie la base de données nom_bdd pour la connection spécifiée

Les instances de Database supportent 2 méthodes:

  • tables() : renvoie la liste des noms de tables dans la base de données
  • drop() : efface la base de données

Table(nom_table,bdd) : nom_table est le nom de la table, bdd est l'instance de Database

Pour manipuler une table, on utilise la même syntaxe que dans PyDbLite :

  • pour créer une tables il faut spécifier un type de champ de MySQL : INTEGER, REAL, DATETIME, CHAR, BLOB,etc. :
    table.create(('nom','CHAR(20)'),('age','INTEGER'),('taille','REAL'))
  • s'il faut fournir d'autres informations, les mettre dans un second argument, en utilisant la syntaxe SQL propre à MySQL :
    table.create(('recid','INTEGER PRIMARY KEY AUTO_INCREMENT'),
         ('date','TIMESTAMP DEFAULT CURRENT_TIMESTAMP'))

Pour l'insertion, la sélection, la mise à jour et la suppression, la syntaxe est la même que ci-dessus

La sélection par identifiant d'enregistrement ne fonctionne que si un champ INTEGER PRIMARY KEY AUTO_INCREMENT est présent dans la table ; les fonctions delete() et update() requièrent aussi ce champ

L'instance de Base a un attribute cursor, ce qui permet d'exécuter des commandes SQL par db.cursor.execute(expression_sql) et récupérer le résultat par results = db.cursor.fetchall()