当前位置: 首页 > 知识库问答 >
问题:

sqlite3中不存在SQL语句的地方[重复]

卫子平
2023-03-14

我的代码是这样的:

import sqlite3
def connect():
    conn = sqlite3.connect("books.db")
    cur = conn.cursor()
    cur.execute("CREATE TABLE IF NOT EXISTS book (id INTEGER PRIMARY KEY, title text, author text, year integer)")
    conn.commit()
    conn.close()
def insert(title, author, year):
    conn = sqlite3.connect("books.db")
    cur = conn.cursor()
    cur.execute("INSERT INTO book VALUES (NULL, ?, ?, ?)", (title, author, year))
    conn.commit()
    conn.close()
connect()
insert("Title", "Author", 1950)

我想使用WHERE NOT EXISTS SQL语句,以避免重复输入。我尝试了不同的写作方式,在cur沿线不存在的地方。execute(),但继续获取:

sqlite3。操作错误:

共有1个答案

易星纬
2023-03-14

为了避免重复插入,请使用唯一索引或约束:

create unique index unq_book_title_author_year on book(title, author, year);

这比不存在要好,因为数据库强制唯一性。请注意,如果尝试重复插入,将尝试插入,然后失败。

 类似资料:
  • 问题内容: 我在Excel中设置了大约5000个ID,在表中我在ID中设置了30000个左右。如果我在SQL语句中使用“ In”条件,那么我在Excel中所拥有的ID大约为4300个ID。但是,如果我在Excel id中使用“不在”。我有大约25000多个记录。我只是发现表中缺少Excel ID。 如何为此编写SQL? 示例:Excel ID是 表格有ID 现在我想从Excel中获取缺少表格的值?

  • 我有一个我认为是完全琐碎的查询-插入值到一个表中,如果一个值与匹配的ID不存在: 我在where语句周围得到一个错误。为什么?我如何实现我的目标?

  • 为什么我不能在不使用return语句的情况下运行此代码段?

  • 错误消息: [错误]运行得测试:1,失败:0,错误:1,跳过得:0,运行得时间:3.003s<<<失败!-在org.studentnr.backend.service.userserviceTest[错误]org.studentnr.backend.service.userserviceTest.testCreateUser所用时间:0.004s<<<错误!java.lang.IllegalSta

  • 我当前有一个Get变量 我正尝试将其添加到sql语句中,如下所示: 然后运行 我得到一个无效的列名。但这是没有意义的,因为如果我手动将请求这样放入 我获取列数据,只是当我将其作为get变量输入时没有。我做错了什么。我对PDO比较陌生。 更新:现在我有以下内容: 而且 但我得到了

  • 问题内容: 我想重命名表达式结果中的列。当然,以下操作无效: 由于我是SQL的新手,我想我只是缺少一个会导致答案的概念,工具或关键字。向正确方向的提示将不胜感激。谢谢! 更新 我正在寻找一种实现此目的的通用方法,并且特定于MySQL的技术绝对可以。 简而言之,我正在编写一个工具,用于将MySQL查询的结果“导出”到Google Spreadsheets(通过Google Data API)。有些查