我正在使用 Python 3.9 通过 Pyodbc 将多个 Google RSS 新闻列表插入到带参数的 SQL 表中,但总是遇到以下程序错误:
以下是所有代码,请帮忙!
我检查了 SQL 表,发现实际上有一些记录已经成功导入到 SQL 中(15 条记录),但并非全部(30 条记录)。cursor.execute(query) pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near 'cò' . (102) (SQLExecDirectW)")
以下是所有代码,请帮忙!
import bs4
from bs4 import BeautifulSoup as soup
from urllib.request import urlopen
import pyodbc
news_url="https://news.google.com/rss?hl=vi&gl=VN&ceid=VN:vi"
Client=urlopen(news_url)
xml_page=Client.read()
Client.close()
soup_page=soup(xml_page,"xml")
news_list=soup_page.findAll("item")
cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=ADMIN;DATABASE=NewsCollect2')
cursor = cnxn.cursor()
for news in news_list:
query = f"insert into news2(Title,Source1,Time1) values (N'"+news.title.text+"',N'"+news.source.text+"',N'"+news.pubDate.text+"')"
cursor.execute(query)
cursor.commit()
cursor.close()
cnxn.close()
附言:我尝试将文件提取为txt格式,结果完全没问题。
'); DROP TABLE Users; --
,猜猜会发生什么。不要通过连接用户数据来创建查询语句。无论如何引用或净化都不能保护你免于SQL注入攻击。使用参数化查询更加安全且更容易。 - Panagiotis Kanavos