python下向sqlite插入记录,是否存在过记录的判断不起作用

查看:77
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆