Les systèmes ORM sont très pratiques pour gagner en productivité mais il est intéressant de temps en temps de revoir les bases des outils que l’on utilise. Voici comment effectuer une requête MySQL en Python.  

Installation du connecteur MySQL

Ajouter au fichier mysql-connector-python au fichier requirements.txt ou bien:

pip install mysql-connector-python

Initialisation de la connexion

    def get_connexion(self):
        cnx = mysql.connector.connect(user='myuser', password='mypassword',
                                      host='mydb',
                                      database='fredd')
        return cnx

Récupération d’éléments en fonction de paramètres de recherche

Le paramètre query de la fonction get_by est un dictionnaire python. Il comprend les propriété à rechercher

    def get_by(self, query):
        mydb = self.get_connexion()
        sql = "SELECT * FROM mytable WHERE"
        first_key = list(query.keys())[0]
        last_key = list(query.keys())[len(list(query.keys()))-1]
        if(len(query) == 1):
            for key in query:
                sql += " " + key + "=" + "'"+query[key]+"'"
        else:
            for key in query:
                if(key == first_key):
                    sql += " " + key + "=" + "'"+query[key]+"' AND"
                elif(key == last_key):
                    sql += " " + key + "=" + "'"+query[key]+"'"
                else:
                    sql += " AND " + key + "=" + "'" + 
                        query[key]+"'"
        cursor = mydb.cursor()
        cursor.execute(sql)
        result = cursor.fetchall()
        #Vérification du nombre de lignes dans le résultat + rappel de la requête
        print("Total number of rows is: ",
                  cursor.rowcount, "for sql :", sql)
        return result