Sql IntegrityError:列名称1不唯一

Sql IntegrityError:列名称1不唯一,sql,Sql,每次运行此代码时,我都会得到“column name1不是唯一的”。为什么? 可能只是因为这是真的,并且您试图违反name1上的唯一约束。CREATE TABLE语句将字段名称1定义为唯一:name1 TEXT unique主键 原因是,您试图在表中插入列“name1”的重复项。 很可能是在某个循环中调用此命令,从FB接收的数据包含多个搜索结果的相同页面名称。 也可能是您没有删除旧数据库(从上一次运行中) 您可以尝试显示或保存要插入表中的日志文件值 正确的解决方案是在循环外创建表。 应该是这样的

每次运行此代码时,我都会得到“column name1不是唯一的”。为什么?


可能只是因为这是真的,并且您试图违反name1上的唯一约束。CREATE TABLE语句将字段名称1定义为唯一:
name1 TEXT unique主键

原因是,您试图在表中插入列“name1”的重复项。 很可能是在某个循环中调用此命令,从FB接收的数据包含多个搜索结果的相同页面名称。 也可能是您没有删除旧数据库(从上一次运行中)

您可以尝试显示或保存要插入表中的日志文件值

正确的解决方案是在循环外创建表。 应该是这样的:

  • 开放数据库连接
  • 如果不存在,则创建表
  • 清除表中的记录(以避免重复)
  • FB查询的开始循环
  • 将记录插入数据库
  • 闭环
  • 关闭数据库连接

  • 解释这意味着他试图为name1插入两行值相同的行(可能为null或空字符串)。即使我删除了唯一的主键并只留下name1文本,它仍然会给出“column name1 is not UNIQUE”。您是否删除了第一次运行它时创建的表?因为它将跳过表的创建,因为它存在并且不会抛出错误。
    graph = fb.graph.api(token)
    f = graph.get_object(cat = 'single', id = '765898450131958', fields=           ['likes'])
    strona = f['id']
    liczbalajkow = f['likes']
    print liczbalajkow
    conn = sqlite3.connect('fb_likes2.sqlite')
    cur = conn.cursor()
    cur.execute('''
    CREATE TABLE IF NOT EXISTS Likes (id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE, name1 TEXT UNIQUE PRIMARY KEY, likes_count INTEGER, date DATES)''');   
    cur.execute('''INSERT INTO Likes (name1, likes_count, date)
    VALUES ( ?, ?, ? )''', ( strona, liczbalajkow, date.today(), ) );
    conn.commit()