Bagaimana untuk memasukkan berbilang nilai ke dalam pangkalan data MySQL menggunakan skrip Python
P粉818125805
P粉818125805 2024-01-16 18:18:52
0
1
455

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粉818125805
P粉818125805

membalas semua(1)
P粉825079798

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.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan