suchen

Heim  >  Fragen und Antworten  >  Hauptteil

So fügen Sie mithilfe eines Python-Skripts mehrere Werte in die MySQL-Datenbank ein

Ich habe die folgenden Beispielwerte;

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']}]

Ich habe es satt, das folgende Skript zu verwenden, um sie in meine Datenbank einzufügen;

# 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()

Aber ich bekomme immer wieder diesen Fehler;

Datei „C:Python311Libsite-packagesmysqlconnectorconnection_cext.py“, Zeile 616, in cmd_query wirf get_mysql_Exception( mysql.connector.errors.ProgrammingError: 1064 (42000): Es liegt ein Fehler in Ihrer SQL-Syntax vor. Sehen Sie im Handbuch Ihrer MySQL-Serverversion nach, was in der Nähe des „Datenbankwerts (Titel, Zusammenfassung, Link, Betreff)“ verwendet wird. Korrekte Grammatik („Guld för Odermatt i schweizisk“ in Zeile 1

Ich habe es satt, Code mit for-Schleifen anstelle von „executemany“ neu zu schreiben;

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)

Aber ich habe immer noch den gleichen Fehler und kann ihn nicht beheben. Irgendwelche Ideen?

P粉818125805P粉818125805321 Tage vor461

Antworte allen(1)Ich werde antworten

  • P粉825079798

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

    “INSERT INTO”语句之后应该有有效的表名。但在您的查询中,表名称是“database”,这是表名称的无效标识符。要将数据插入表中,首先必须在 NewsExtractDb 数据库中创建该表。你可以试试这个:

    使用NewsExtractDb;

    创建表newstable( 标题 nvarchar(255), 摘要 nvarchar(255), 链接 nvarchar(255), 主题 nvarchar(500) );

    并更改sql查询如下:

    sql =“插入新闻表(标题、摘要、链接、主题)值(%s、%s、%s、%s)”

    在此之后,您的代码应该可以正常运行。

    Antwort
    0
  • StornierenAntwort