使用sqlite和python,fetchall()

时间:2017-12-09 07:56:02

标签: python-3.x sqlite

我试图比较存储在sqlite数据库中的liks的链接列表。

假设数据库中的链接是:

  

link.com \页1/1

     

link.com \第2页

     

link.com \ PAGE3

如果数据库中存在给定的链接,并且如果它不存在则添加它,我已经将以下代码写入了小鸡。

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',)]

我认为问题在于额外的括号和逗号,但我并不确定。

1 个答案:

答案 0 :(得分:0)

fetchall()返回一个行列表,其中每一行都是一个包含所有列值的元组。包含字符串的元组与字符串不同。

您必须从行中提取值(迭代游标时不需要fetchall()):

previouslinks = [row[0] for row in c]