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を調べてください。これには、テーブルに UNIQUE インデックスが必要です。これにより、IGNORE がトリガーされます。

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