Python和sqlite3抛出错误:sqlite3.OperationalError:near";s";:语法错误

Python和sqlite3抛出错误:sqlite3.OperationalError:near";s";:语法错误,python,sqlite,web-scraping,Python,Sqlite,Web Scraping,我正在尝试使用Python和BeautifulSoup来获取一些web信息,对其进行迭代,然后将一些片段插入到sqlite3数据库中。但我一直在想这个错误: 文件“/Users/Chris/Desktop/BS4/TBTfile.py”,第103行,在TBTscrape中 c、 执行(项目) sqlite3.error:靠近“s”:语法错误 同样的代码在一个非常相似的刮板上运行良好,不会抛出这些错误。以下是其中的一部分: listicle.append("INSERT INTO headline

我正在尝试使用Python和BeautifulSoup来获取一些web信息,对其进行迭代,然后将一些片段插入到sqlite3数据库中。但我一直在想这个错误:

文件“/Users/Chris/Desktop/BS4/TBTfile.py”,第103行,在TBTscrape中 c、 执行(项目) sqlite3.error:靠近“s”:语法错误

同样的代码在一个非常相似的刮板上运行良好,不会抛出这些错误。以下是其中的一部分:

listicle.append("INSERT INTO headlines (heds, url, image_loc, time, source) VALUES ('" + TBTheadline + "', '" + TBTurl + "', '" + imageName + "', '" + TBTpostDate + "', '" + source + "')")

    else:
        print "TBT item already in database"

print listicle

for item in listicle:
    c.execute(item)
    conn.commit()
    row = c.fetchall()
    print "This has been inserted succcessfully: ", item

您正在将收集的数据连接到SQL语句中。永远不要那样做,这是最重要的。除了您所看到的问题(可能是由于被删除的HTML中的“或”或类似字符),您的代码中还有一个巨大的安全漏洞(在您的情况下可能会有,也可能不会有)

无论如何,
sqlite3
有一种很好的方法可以完全实现您想要的功能:。就你而言

listicle.append((TBTheadline,TBTurl,imageName,TBTpostDate,source))
conn.executemany(“插入标题(HED、url、图像位置、时间、源)值(?,,,,,,?)”,列表条)

哇,这太容易了。我还没想到。很漂亮,谢谢!