0

所以我做了很多插入,只有当名称在表中不“存在”时,我才想插入到某个表中,即我不想有任何重复。我现在正在以这种方式接近它:

def create_artist(artist_name):
    artistid = has_artist(artist_name)
    if not artistid:
        sql['cursor'].execute("INSERT INTO artists VALUES (NULL, ?)", (artist_name,))
        artistid = has_artist(artist_name)
    return artistid[0]

def has_artist(artist_name):
    sql['cursor'].execute("SELECT id FROM artists WHERE artist_name = ?", (artist_name,))
    return (sql['cursor'].fetchone())

它基本上会查找表中是否有同名的艺术家,如果没有,它会插入一个,否则它只是返回查找。必须有更好的方法来做到这一点,是否可以将整个过程移动到查询中,这样我就可以将这一切移动到 SQL 中?

4

1 回答 1

2

查看INSERT IGNORE。这将要求您在表上有一个唯一索引,这将导致 IGNORE 触发。

INSERT IGNORE INTO artists VALUES (NULL, ?)
于 2012-04-03T20:43:47.327 回答