Python et MySQL via mysql connector - Nom de table a l'aide d'une variable dans un Query
Bonjour !
Je suis actuellement nouveau et j'apprend sur le tas le python 3 en m'amusant.
Mon projet actuel est d'utiliser mon RaspberryPi4 en serveur Web, et d'utiliser une interface web (codé a la main(Php/Html)) afin d’afficher mon planning de travail sur une page web.
Maintenant, je souhaitais créer un programme python capable de récupérer des infos via un fichier *.CSV qui contient mon planning pour l’incrémenter dans ma base de donnée.
La arrive mon problème, pour accéder à ma database j'utilise mysql connector ça fonctionne bien et c'est simple d'utilisation.
Sauf que je n'arrive pas a rendre dynamique le nom de la table concernée pour mes requêtes SQL.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
if verify == 1 :
# on récupère le mois concerné, pour ensuite ajouter le planning dans la DB
mois = row[0]
year = datetime.datetime.now()
config = {
'user': 'root',
'password': 'mdp',
'host': '127.0.0.1',
'database': str(year.year),
'raise_on_warnings': True
}
cnx = mysql.connector.connect(**config)
cursor = cnx.cursor()
cursor.execute("SELECT COUNT(ID) AS nb2 FROM %s WHERE login=%s", (str(mois), row[1],))
results = cursor.fetchall()
for nb2 in results:
print(results[0]) |
Mais voila ou est mon problème c'est que je ne peux pas utiliser de variable pour le nom de ma table, car ça renvois des ' ' au début et à la fin du nom de ma table. Exemple: 'decembre'
Et python répond:
Code:
1 2 3 4 5 6 7 8 9 10 11
|
Traceback (most recent call last):
File "py_csv.py", line 88, in <module>
cursor.execute("SELECT COUNT(ID) AS nb2 FROM %s WHERE login=%s", (str(mois), row[1],))
File "/usr/lib/python3/dist-packages/mysql/connector/cursor.py", line 569, in execute
self._handle_result(self._connection.cmd_query(stmt))
File "/usr/lib/python3/dist-packages/mysql/connector/connection.py", line 553, in cmd_query
result = self._handle_result(self._send_cmd(ServerCmd.QUERY, query))
File "/usr/lib/python3/dist-packages/mysql/connector/connection.py", line 442, in _handle_result
raise errors.get_exception(packet)
mysql.connector.errors.ProgrammingError: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''novembre' WHERE login='BOUSIM'' at line 1 |
J'ai chercher de la doc pour mysql.connector, ils expliquent pleins de choses intéressante mais pas ça. Je dois me focaliser sur quelque chose qui doit être faisable d'une manière différente je pense.
Si quelqu'un a des connaissance a me faire partager je serais extrêmement reconnaissant !
A l'avenir, je souhaiterais ensuite faire un programme capable de récupérer mon planning dans ma base de donnée, et de créer un fichier *.ics pour le lier a mon google agenda (testé et ça marche :) ).
Bonne journée à tous et à toutes ! Et merci d'avance pour votre aide.
C'est la solution a mon problème !
Bonjour !
Merci à vous deux d'avoir pris le temps de me répondre !
Pour te répondre @Wiztricks les valeurs de row[0] et row[1] sont des 'strings'.
J'ai essayer le code de @papajoker et c'est effectivement la solution a mon problème. J'ai pas du tout pensé à utiliser ça, c'est pourtant la base de python ... j'ai encore beaucoup a apprendre!
Merci encore pour ce coup de pouce !
Bonne fin de weekend a vous !