J'essaie de comparer une liste de liens aux liks stockés dans une base de données sqlite.
en supposant que les liens dans la base de données sont:
link.com \ page1
link.com \ page2
link.com \ page3
J'ai écrit le code suivant pour chick si un lien donné existe dans la base de données et l'ajoute s'il n'existait pas.
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
le problème est que même si le lien est dans la base de données, le script ne le reconnaît pas!
lorsque j'essaye d'imprimer une previouslinks
variable, les résultats ressemblent à ceci:
[('link.com\page1',), ('link.com\page2',), ('link.com\page3',)]
Je pense que le problème vient des parenthèses et virgules supplémentaires, mais je ne suis pas tout à fait sûr.
fetchall()
renvoie une liste de lignes, où chaque ligne est un tuple contenant toutes les valeurs de colonne. Un tuple contenant une chaîne n'est pas le même que la chaîne.
Vous devez extraire les valeurs des lignes (et vous n'en avez pas besoin fetchall()
lors de l'itération sur un curseur):
previouslinks = [row[0] for row in c]
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots