Rumah  >  Soal Jawab  >  teks badan

Bagaimana untuk memasukkan berbilang nilai ke dalam pangkalan data MySQL menggunakan skrip Python

Saya mempunyai nilai contoh berikut;

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

Saya bosan menggunakan skrip berikut untuk memasukkannya ke dalam pangkalan data saya;

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

Tetapi saya terus mendapat ralat ini;

Fail "C:Python311Libsite-packagesmysqlconnectorconnection_cext.py", baris 616, dalam cmd_query buang get_mysql_Exception( mysql.connector.errors.ProgrammingError: 1064 (42000): Terdapat ralat dalam sintaks SQL anda semak manual untuk versi pelayan MySQL anda untuk melihat apa yang digunakan berhampiran nilai "Pangkalan data (tajuk, ringkasan, pautan, subjek)" Tatabahasa yang betul ("Guld för Odermatt i schweizisk" dalam baris 1

Saya bosan menulis semula kod dengan gelung for dan bukannya "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)

Tetapi saya masih mengalami ralat yang sama dan tidak dapat memperbaikinya. Ada idea?

P粉818125805P粉818125805277 hari yang lalu434

membalas semua(1)saya akan balas

  • P粉825079798

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

    Perlu ada nama jadual yang sah selepas pernyataan "INSERT INTO". Tetapi dalam pertanyaan anda, nama jadual ialah "pangkalan data" yang merupakan pengecam tidak sah untuk nama jadual. Untuk memasukkan data ke dalam jadual, anda mesti mencipta jadual dalam pangkalan data NewsExtractDb terlebih dahulu. Anda boleh mencuba ini:

    Gunakan NewsExtractDb;

    Buat jadual berita ( tajuk nvarchar(255), ringkasan nvarchar(255), pautan nvarchar(255), topik nvarchar(500) );

    Dan tukar pertanyaan sql seperti berikut:

    sql = "Sisipkan nilai jadual berita (tajuk, abstrak, pautan, topik) (%s, %s, %s, %s)"

    Selepas ini, kod anda sepatutnya berjalan dengan baik.

    balas
    0
  • Batalbalas