【发布时间】:2021-06-03 08:54:15
【问题描述】:
我正在使用 python 3.9 使用 pyobc 将来自 google rss 新闻的多个新闻列表插入带有参数的 SQL 表,但总是出现以下编程错误:
cursor.execute(query) pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]'cò' 附近的语法不正确 . (102) (SQLExecDirectW)")
我检查了 sql 表,发现实际上一些记录已成功导入 SQL(15 条记录),但不是全部(30 条记录)
下面是我所有的代码请帮忙!
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()
p/s 我尝试提取到 txt 文件,它工作得很好
【问题讨论】:
-
猜猜如果有人在其中一个字段中输入
'); DROP TABLE Users; --会发生什么。不要通过连接用户数据来创建查询。再多的引用或清理都无法保护您免受 SQL 注入。使用parameterized queries 更安全、更更容易 -
@Panagiotis Kanavos 成功了。你拯救了我的一天。非常感谢!
标签: python sql-server beautifulsoup pyodbc