J'ai les exemples de valeurs suivants :
lst = [{'title': 'Guld för Odermatt i schweizisk dubbel', 'summary': '', 'link': '``https://www.dn.se/sport/guld-for-odermatt-i-schweizisk-dubbel/``', 'topic': ['empty', 'empty', 'empty', 'empty', 'empty', 'empty', 'SamhalleKonflikter', 'empty', 'empty', 'empty']} , {'title': 'Bengt Hall blir ny tillförordnad vd på Malmö Opera', 'summary': '', 'link': '``https://www.dn.se/kultur/bengt-hall-blir-ny-tillforordnad-vd-pa-malmo-opera/``', 'topic': ['empty', 'empty', 'empty', 'empty', 'empty', 'empty', 'SamhalleKonflikter', 'empty', 'empty', 'empty']} , {'title': 'Fyra gripna för grova narkotikabrott', 'summary': '', 'link': '``https://www.dn.se/sverige/fyra-gripna-for-grova-narkotikabrott/``', 'topic': ['empty', 'empty', 'empty', 'empty', 'empty', 'empty', 'SamhalleKonflikter', 'empty', 'empty', 'empty']}]
J'en ai marre d'utiliser le script suivant pour les insérer dans ma base de données ;
# Connect to MySQL server `cnxn = mysql.connector.connect(` `host="localhost",` `user="root",` `password="password",` `database="NewsExtractDb"` `)`
# Create a cursor object cursor = cnxn.cursor()
sql = "INSERT INTO database (title, summary, link, topic) VALUES (%s, %s, %s, %s)" params = [(item['title'], item['summary'], item['link'], ', '.join(item['topic'])) for item in lst] cursor.executemany(sql, params)cnxn.commit()
Mais je continue à recevoir cette erreur ;
Fichier "C:Python311Libsite-packagesmysqlconnectorconnection_cext.py", ligne 616, dans cmd_query lancez get_mysql_Exception( mysql.connector.errors.ProgrammingError : 1064 (42000) : il y a une erreur dans votre syntaxe SQL ; consultez le manuel de la version de votre serveur MySQL pour voir ce qui est utilisé à côté de la valeur "Base de données (titre, résumé, lien, sujet)" Corriger la grammaire ("Guld för Odermatt i schweizisk" à la ligne 1
J'en ai marre de réécrire du code avec des boucles for au lieu de "executemany" ;
sql = "INSERT INTO database (title, summary, link, topic) VALUES (%s, %s, %s, %s)"
for item in lst:values = (item['title'], item['summary'], item['link'], ', '.join(item['topic']))cursor.execute(sql, values)
Mais je me retrouve toujours avec la même erreur et je n'arrive pas à la corriger. Des idées?
Il devrait y avoir un nom de table valide après l'instruction "INSERT INTO". Mais dans votre requête, le nom de la table est « base de données », ce qui est un identifiant non valide pour un nom de table. Pour insérer des données dans une table, vous devez d'abord créer la table dans la base de données NewsExtractDb. Vous pouvez essayer ceci :
Utilisez NewsExtractDb ;
Créer une table d'actualités ( titre nvarchar(255), résumé nvarchar(255), lien nvarchar(255), sujet nvarchar (500)
Et modifiez la requête SQL comme suit :
sql = "Insérer les valeurs du tableau d'actualités (titre, résumé, lien, sujet) (%s, %s, %s, %s)"
Après cela, votre code devrait fonctionner correctement.