初心者でもPythonを使ってみよう

趣味と実益を兼ねたPython学習記



【sqlite3】REPLACEコマンドでレコードを挿入・更新する方法【python】

f:id:vigilantPotato:20191130230817p:plain

REPLACEコマンドでデータベースのレコードを挿入・更新する方法をまとめました。

【スポンサーリンク】

REPLACEコマンドでレコードを挿入・更新

REPLACEコマンドは主キーの重複がない場合は新規レコードとして挿入し、重複がある場合はそのレコードのデータを更新することができる使いやすいコマンドです。実際にコードを書いてデータベースを操作しながら、使い方をまとめました。

事前にsqlite3のインポートと、データベースfruit.dbを作成しておきます。

import sqlite3

#データベースを作成
db = sqlite3.connect("fruit.db", isolation_level=None)

テーブルを作成

REPLACEコマンドを使用してレコードを挿入・更新するには、テーブルを作成するためにPRIMARY KEY:主キーを設定する必要があります。

主キーはテーブル内の特定のレコードを識別するためのデータで、テーブル内のレコード間で重複することは許されません。

主キーはテーブル作成時に指定することができます。以下のSQL命令文では、id、name、priceの3つのフィールドを持つテーブルを作成し、idを主キーとして設定しています。

#SQL命令文(idを主キーとしてFruitテーブル作成)
sql = """
    CREATE TABLE Fruit (
        id INTEGER PRIMARY KEY,
        name VARCHAR(20),
        price INTEGER
    );
"""

#命令を実行(テーブル作成)
db.execute(sql)

この命令文で作成されたテーブル内の各データ間でidの重複は許されないため、idは各データを明確に識別する際に便利なフィールドとなります。

[↑ 目次へ]


レコードを挿入

idを主キーを設定したテーブルへ、REPLACEコマンドでレコードを挿入していきます。

REPLACEコマンドは、REPLACE INTO テーブル名 (フィールド) VALUES(データ)の様な形で使用します。

先ほど作成したFruitテーブルに、レコード「id:1, name:banana, price:138」を挿入します。

#SQL命令文(REPLACEコマンドを使用してレコードを挿入)
sql = """
    REPLACE INTO Fruit (id, name, price)
    VALUES(1, 'banana', 138)
"""

#命令を実行(レコードを挿入)
db.execute(sql)

上記のコードを実行すると、データベースのFruitテーブルに以下のレコードが登録されます。

(1, 'banana', 138)

[↑ 目次へ]


レコードを更新

REPLACEコマンドを使用してレコードの更新するSQL命令文は、レコードを挿入するときと全く同じになります。

先ほどFruitテーブルに登録したレコード「id:1, name:banana, price:138」について、nameをbanana→appleに、priceを138→150に更新してみます。

#SQL命令文(REPLACEコマンドを使用してレコードを更新)
sql = """
    REPLACE INTO Fruit (id, name, price)
    VALUES(1, 'apple', 150)
"""

#命令を実行(レコードを更新)
db.execute(sql)

主キーid:1のレコードがすでに存在するため、以下の様にレコードのnameとpriceが更新されます。

(1, 'apple', 150)

[↑ 目次へ]


コード全体

import sqlite3

def show_record():
    #SQL命令文(Fruitテーブル内のレコードを全て取得)
    sql = "SELECT * FROM Fruit"

    #カーソルを取得して命令を実行
    c = db.cursor()
    c.execute(sql)

    #レコードの表示
    for row in c:
        print(row)

#データベースを作成
db = sqlite3.connect("fruit.db", isolation_level=None)

#①PRIMARY KEY(主キー)を設定してテーブルを作成
#SQL命令文(idを主キーとしてFruitテーブル作成)
sql = """
    CREATE TABLE Fruit (
        id INTEGER PRIMARY KEY,
        name VARCHAR(20),
        price INTEGER
    );
"""

#命令を実行(テーブル作成)
db.execute(sql)

#②REPLACEコマンドでレコードを挿入
#SQL命令文(REPLACEコマンドを使用してレコードを挿入)
sql = """
    REPLACE INTO Fruit (id, name, price)
    VALUES(1, 'banana', 138)
"""

#命令を実行(レコードを挿入)
db.execute(sql)

#レコードの表示
print("REPLACEコマンドでレコードを挿入")
show_record()

#③REPLACEコマンドでレコードを更新
#SQL命令文(REPLACEコマンドを使用してレコードを更新)
sql = """
    REPLACE INTO Fruit (id, name, price)
    VALUES(1, 'apple', 150)
"""

#命令を実行(レコードを更新)
db.execute(sql)

#レコードの表示
print("REPLACEコマンドでレコードを更新")
show_record()

#データベースを閉じる
db.close()

[↑ 目次へ]