Como inserir em uma tabela através do Python se um valor ainda não existe no SQLite


Melhor resposta

Como faço para inserir em uma tabela através do Python se um valor não já existe no SQLite?

cursor.execute("INSERT INTO author (name) VALUES(?) SELECT * FROM author WHERE NOT EXISTS(SELECT * FROM author)", (aname, ))

Presumindo:

  • que você tem um UNIQUE ou PRIMARY KEY restrição na coluna name, e
  • você não deseja inserções name duplicadas para gerar erros,

então a consulta SQLite seria:

INSERT OR IGNORE INTO author (name) VALUES (?)

(Leia a página da cláusula SQLite ON CONFLICT para entender mais sobre a resolução de conflitos e as cinco diferentes opções de resolução disponível— INSERT OR IGNORE é apenas um açúcar sintático para INSERT ON CONFLICT IGNORE.)

Se você não tem nenhuma restrição na coluna name, então a maneira mais segura de fazer isso é duas consultas separadas:

  • SELECT * FROM author WHERE name=?, então, se voltar com 0 linhas correspondentes,
  • INSERT INTO author (name) VALUES (?)

Resposta

a própria instrução SQL está errada e * em geral deve ser evitada

inserir no autor (nome)

selecionar? do autor

onde não existe (selecione 42 do autor, onde nome =?)

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *