Maison  >  Questions et réponses  >  le corps du texte

Comment insérer plusieurs valeurs dans la base de données MySQL à l'aide du script Python

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?

P粉818125805P粉818125805277 Il y a quelques jours443

répondre à tous(1)je répondrai

  • P粉825079798

    P粉8250797982024-01-17 09:44:56

    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.

    répondre
    0
  • Annulerrépondre