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

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



【sqlite3】フィールド(カラム)を操作する方法【python】

f:id:vigilantPotato:20191130230817p:plain

sqlite3でデータベースに作成したテーブルについて、フィールド(カラム)を取得、追加する方法をまとめました。

フィールド名を取得・追加する

データベース中のテーブルのフィールド名を取得する方法と、フィールドを追加する方法をまとめました。

事前にsqlite3のインポートと、データベースfruit.dbを作成しておきます。その後、Fruitテーブルを作成してテーブル内に、id、name、priceフィールドを作成しておきます。

import sqlite3

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

#テーブルを作成
#SQL命令文
sql = """
    CREATE TABLE IF NOT EXISTS Fruit (
        id INTEGER PRIMARY KEY,
        name VARCHAR(20),
        price INTEGER
    );
"""

#命令を実行
db.execute(sql)

フィールド名を取得

テーブルのフィールド名を取得するには、カーソルオブジェクトでSELECTコマンドを実行してテーブル内の情報を取得した後、description属性を取得します。

#SQL命令文(Fruitテーブル内情報を取得)
sql = "SELECT * FROM Fruit"

#カーソルオブジェクトを作成
c = db.cursor()

#命令を実行
c.execute(sql)

#フィールド名を取得
print(c.description)

出力:

(('id', None, None, None, None, None, None), ('name', None, None, None, None, None, None), ('price', None, None, None, None, None, None), ('quantity', None, None, None, None, None, None))

description属性を取得すると、今回の例では7要素を持つタプルが3つ出力されます。それぞれのタプルの先頭の要素がテーブルに登録されたフィールド名で、そのほかはNoneとなります。

そのため、実際にフィールド名を取得する際は、以下の様にfor文を用いた方がわかりやすいです。

for d in c.description:
    print(d[0])

出力:

id
name
price

[↑ 目次へ]


フィールドを追加

テーブルにフィールドを追加するSQL命令文は以下の通りです。

ALTER TABLE テーブル名 ADD COLUMN 追加するフィールド名 型

Fruitテーブルにquantityフィールドをinteger型で追加する場合は、以下の通りになります。

#SQL命令文(Fruitテーブルにフィールド「quantity」を追加)
sql = """ALTER TABLE Fruit ADD COLUMN quantity INTEGER"""

#命令を実行
db.execute(sql)

[↑ 目次へ]


コード全体

import sqlite3

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

#テーブルを作成
#SQL命令文
sql = """
    CREATE TABLE IF NOT EXISTS Fruit (
        id INTEGER PRIMARY KEY,
        name VARCHAR(20),
        price INTEGER
    );
"""

#命令を実行
db.execute(sql)

#①フィールド名を取得して表示する
def get_field_name():
    #SQL命令文(Fruitテーブル内のレコードを全て取得)
    sql = "SELECT * FROM Fruit"

    #カーソルオブジェクトを作成
    c = db.cursor()

    #命令を実行
    c.execute(sql)

    #フィールド名を取得
    for d in c.description:
        print(d[0])


#②テーブルにフィールドを追加する
#SQL命令文(Fruitテーブルにフィールド「quantity」を追加)
sql = """ALTER TABLE Fruit ADD COLUMN quantity INTEGER"""

#命令を実行
db.execute(sql)

#フィールド名を表示
print("フィールドquantity追加後")
get_field_name()

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

[↑ 目次へ]