Python 3.x 将sqlite与python一起使用,fetchall()
我试图将链接列表与存储在sqlite数据库中的LIK进行比较 假设数据库中的链接为: link.com\page1 link.com\page2 link.com\page3 如果数据库中存在给定的链接,我已经为chick编写了以下代码,如果不存在,则添加它Python 3.x 将sqlite与python一起使用,fetchall(),python-3.x,sqlite,Python 3.x,Sqlite,我试图将链接列表与存储在sqlite数据库中的LIK进行比较 假设数据库中的链接为: link.com\page1 link.com\page2 link.com\page3 如果数据库中存在给定的链接,我已经为chick编写了以下代码,如果不存在,则添加它 links = ['link.com\page2', 'link.com\page4'] c.execute('SELECT link FROM ads') previouslinks = c.fetchall() for l in li
links = ['link.com\page2', 'link.com\page4']
c.execute('SELECT link FROM ads')
previouslinks = c.fetchall()
for l in links:
if l not in previouslinks:
c.execute('''INSERT INTO ads(link) VALUES(?)''', (l))
conn.commit()
else:
pass
问题是,即使链接在数据库中,脚本也无法识别它
当我尝试打印previouslinks
变量时,结果如下所示:
[('link.com\page1',), ('link.com\page2',), ('link.com\page3',)]
我认为问题在于额外的括号和逗号,但我不能完全确定。fetchall()
返回一个行列表,其中每一行都是一个包含所有列值的元组。包含字符串的元组与字符串不同
您必须从行中提取值(在光标上迭代时不需要fetchall()
):
previouslinks = [row[0] for row in c]