Rumah > Soal Jawab > teks badan
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粉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.