Python SQLite3 を操作する(重複チェック)

今考えているプログラムではデータベースにデータを登録する際に、すでに登録されているかどうかをチェックして重複しないように、未登録のデータのみを登録するようにしたいと考えています。

前回作ったデータベースapp_url カラムの値でチェックする場合だと以下の様な関数でチェックできそうです。

# app_url の値をチェックする
def is_exist_url(target):
    sql = 'SELECT app_url FROM apps WHERE app_url ="' + target + '"'
    cur = conn.execute(sql)
    if len(cur.fetchall()):
        return True
    else:
        return False

SQL を組み立てて実行し、その結果を fetchall() したリストの長さを調べます。もしすでに登録されていた場合はデータが入ったリストが返ってきますし、登録がなければ len(結果のリスト)0 になります。

def put_data2(app):
    with conn ...
more ...

Python SQLite3 を操作する(テーブル作成からデータ登録、読み出し)

ファイル形式のデータベース SQLite を Python から触ってみます。Python には標準で sqlite3 というモジュールが付いているので特に何かをインストールする必要はありません。

テーブルの作成

まずテーブルを作ってみます。

import sqlite3

DATABASE = 'sample.db'
conn = sqlite3.connect(DATABASE)

def create_table():
    sql = '''CREATE TABLE IF NOT EXISTS apps
             (id INTEGER PRIMARY KEY,
              app_url TEXT,
              app_name TEXT,
              store_url TEXT)'''
    conn.execute(sql)
    conn.commit()
    # conn.close()

sample.db というファイルでデータベースを作り、 apps ...

more ...