python下向sqlite插入记录,是否存在过记录的判断不起作用
本文介绍了python下向sqlite插入记录,是否存在过记录的判断不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
每次都是返回 False
import sqlite3
conn = sqlite3.connect('urls.db')
cursor = conn.cursor()
cursor.execute('CREATE TABLE IF NOT EXISTS urls (id integer primary key autoincrement, link text)')
def url_exists(url):
sql_cmd = '''select * from urls where link = '%s' ''' % url
cursor.execute(sql_cmd)
res = cursor.fetchall()
if len(res) > 0 :
print '%s exists' % url
return True
else:
sql_cmd_2 = '''insert into urls(link) values('%s') ''' % url
cursor.execute(sql_cmd_2)
print '%s added' % url
return False
cursor.close()
conn.commit()
conn.close()
url_status = url_exists('example.com')
print url_status
解决方案
因为添加之后你直接return True了,数据库没有commit。。。
import sqlite3
conn = sqlite3.connect('/tmp/urls.db')
cursor = conn.cursor()
cursor.execute('CREATE TABLE IF NOT EXISTS urls (id integer primary key autoincrement, link text)')
def url_exists(url):
sql_cmd = '''select * from urls where link = '%s' ''' % url
cursor.execute(sql_cmd)
res = cursor.fetchall()
suc = True
if len(res) > 0 :
print '%s exists' % url
suc = True
else:
sql_cmd_2 = '''insert into urls(link) values('%s') ''' % url
cursor.execute(sql_cmd_2)
print '%s added' % url
suc = False
cursor.close()
conn.commit()
conn.close()
return suc
url_status = url_exists('example.com')
print url_status
这篇关于python下向sqlite插入记录,是否存在过记录的判断不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文