Python和sqlite3抛出错误:sqlite3.OperationalError:附近"s":语法

2024-09-25 02:27:43 发布

您现在位置:Python中文网/ 问答频道 /正文

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

文件“/Users/Chris/Desktop/BS4/TBTfile.py文件“,第103行,TBT格式 c、 执行(项) sqlite3.OperationalError:靠近“s”:语法错误

同样的代码可以在非常相似的scraper上正常工作,并且不会抛出这些错误。以下是部分内容:

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

Tags: 文件inweb信息source错误itemusers
1条回答
网友
1楼 · 发布于 2024-09-25 02:27:43

您正在将收集的数据连接到SQL语句中。千万不要这样做,这是mother of all anti-patterns。除了您所看到的问题(可能是由于被刮取的HTML中的'或类似字符),您的代码中存在一个巨大的安全漏洞(在您的情况下可能无关紧要)。在

不管怎样,sqlite3有一个很好的方法来做你想要的事情:^{}。对你来说

listicle.append((TBTheadline,TBTurl,imageName,TBTpostDate,source))

conn.executemany("INSERT INTO headlines (heds, url, image_loc, time, source) VALUES (?,?,?,?,?)", listicle)

相关问题 更多 >