如何使用Python腳本將多個值插入MySQL資料庫
P粉818125805
P粉818125805 2024-01-16 18:18:52
0
1
460

我有以下範例值;

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

我厭倦了使用以下腳本將它們插入到我的資料庫中;

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

但我不斷收到此錯誤;

檔案“C:\Python311\Lib\site-packages\mysql\connector\connection_cext.py”,第 616 行,在 cmd_query 中 引發 get_mysql_Exception( mysql.connector.errors.ProgrammingError: 1064 (42000): 您的SQL 語法有錯誤;檢查與您的MySQL 伺服器版本相對應的手冊,以了解在「資料庫(標題、摘要、連結、主題)值」附近所使用的正確語法(第1 行的「Guld för Odermatt i schweizisk」

我已經厭倦了用 for 迴圈語句而不是「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)

但我最終仍然遇到相同的錯誤,但無法修復。有什麼想法嗎?

P粉818125805
P粉818125805

全部回覆(1)
P粉825079798

“INSERT INTO”語句之後應該會有有效的表名。但在您的查詢中,表名稱是“database”,這是表名稱的無效識別碼。要將資料插入表中,首先必須在 NewsExtractDb 資料庫中建立該表。你可以試試這個:

使用NewsExtractDb;

建立表格newstable( 標題 nvarchar(255), 摘要 nvarchar(255), 連結 nvarchar(255), 主題 nvarchar(500) );

並更改sql查詢如下:

sql =「插入新聞表(標題、摘要、連結、主題)值(%s、%s、%s、%s)」

在此之後,您的程式碼應該可以正常運作。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板