[英]How to mix python mysql.connector and newspaper libraries?
我目前正在制作一個程序,該程序可搜索BBC新聞網站,並使用mysql.connector和報紙庫將每個標題添加到MySQL數據庫中。 我已經編寫了以下代碼,但是運行時什么也沒有發生,我想知道自己做錯了什么嗎? 抱歉,這只是一個簡單的錯誤:)
import mysql.connector
import newspaper
mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="",
database="headlines"
)
search = newspaper.build('https://www.bbc.co.uk/news')
for article in search.articles:
mycursor = mydb.cursor()
sql = "insert into headlines (headline) values (%s)", (article.title)
mycursor.execute(sql)
mydb.commit()
print(mycursor.rowcount, "headlines inserted.")
當前,您既不會使用模運算符將article.title插入到SQL字符串中,也不會使用引號將字符串文字括起來。 另外,請注意:字符串模格式是用於字符串格式的舊的, 不推薦的版本 ,已取消強調 ,但未正式棄用。
sql = "insert into headlines (headline) values (%s)", (article.title)
實際上, sql返回的元組不是cur.execute()
期望的第一個參數。
print(type(sql))
# <class 'tuple'>
您可能打算將查詢參數化為MySQL的占位符%s
,類似於字符串模數占位符。 正確執行此操作,可以避免任何字符串插值或引號引起來:
# INITIALIZE CURSOR OUTSIDE LOOP
mycursor = mydb.cursor()
# PREPARED STATEMENT (SCALAR STRING)
sql = "insert into headlines (headline) values (%s)"
search = newspaper.build('https://www.bbc.co.uk/news')
for article in search.articles:
# BIND PARAM AS ONE-ITEM TUPLE
mycursor.execute(sql, (article.title,))
mydb.commit()
# print(mycursor.rowcount, "headlines inserted.") -- rowcount IS N/A FOR ACTION QUERIES
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.