ホームページ >バックエンド開発 >Python チュートリアル >Pythonデータベースsqlite3適用方法を詳しく解説

Pythonデータベースsqlite3適用方法を詳しく解説

高洛峰
高洛峰オリジナル
2017-03-23 17:05:152036ブラウズ

Pythonには、軽量のリレーショナルデータベースSQLiteが付属しています。このデータベースはSQL言語を使用しています。バックエンド データベースとして、SQLite を Python とともに使用して、Web サイトを構築したり、データ ストレージを必要とするツールを作成したりできます。 SQLite は、HTML5 やモバイル端末などの他の分野でも広く使用されています。 Python 標準ライブラリの sqlite3 は、このデータベースへのインターフェイスを提供します。

書店の本のカテゴリと価格を保存するための簡単なリレーショナル データベースを作成します。データベースには 2 つのテーブルが含まれています。カテゴリは分類を記録するために使用され、ブックは特定の書籍に関する情報を記録するために使用されます。本は特定のカテゴリに属しているため、本にはカテゴリテーブルの主キー ID を指す外部キー (外部キー) があります。

Pythonデータベースsqlite3適用方法を詳しく解説

データベースを作成します

まずデータベースとデータベース内のテーブルを作成します。 connect()を使用してデータベースに接続した後、カーソルを配置することでSQLコマンドを実行できます:

# By Vamei
import sqlite3

# test.db is a file in the working directory.
conn = sqlite3.connect("test.db")

c = conn.cursor()

# create tables
c.execute('''CREATE TABLE category
   (id int primary key, sort int, name text)''')
c.execute('''CREATE TABLE book
   (id int primary key, 
    sort int, 
    name text, 
    price real, 
    category int,
    FOREIGN KEY (category) REFERENCES category(id))''')

# save the changes
conn.commit()

# close the connection with the database
conn.close()


SQLiteのデータベースは上記のtest.dbなどのディスク上のファイルであるため、データベース全体を移動やコピーも簡単です。 test.db はそもそも存在しないため、SQLite が自動的に新しいファイルを作成します。

execute() コマンドを使用して 2 つの SQL コマンドを実行し、データベースに 2 つのテーブルを作成しました。作成後、保存してデータベースから切断します。

データを挿入

上記でデータベースとテーブルが作成され、データベースの抽象構造が確立されました。以下は同じデータベースにデータを挿入します:

# By Vamei

import sqlite3

conn = sqlite3.connect("test.db")
c  = conn.cursor()

books = [(1, 1, 'Cook Recipe', 3.12, 1),
      (2, 3, 'Python Intro', 17.5, 2),
      (3, 2, 'OS Intro', 13.6, 2),
      ]

# execute "INSERT" 
c.execute("INSERT INTO category VALUES (1, 1, 'kitchen')")

# using the placeholder
c.execute("INSERT INTO category VALUES (?, ?, ?)", [(2, 2, 'computer')])

# execute multiple commands
c.executemany('INSERT INTO book VALUES (?, ?, ?, ?, ?)', books)

conn.commit()
conn.close()



データの挿入では、execute() を使用して完全な SQL ステートメントを実行することもできます。 SQL ステートメントのパラメータには、置換記号として「?」を使用し、後続のパラメータに特定の値を指定します。 「%s」などの Python のフォーマットされた文字列は、SQL インジェクション攻撃に対して脆弱であるため、ここでは使用できません。

executemany() メソッドを使用して複数の挿入を実行し、複数のレコードを追加することもできます。各レコードは、上の書籍テーブルの要素など、テーブル内の要素です。
Query

クエリ ステートメントを実行すると、Python はクエリによって取得された複数のレコードを含むルーパーを返します。ループで読み取るか、sqlite3 が提供する fetchone() メソッドと fetchall() メソッドを使用してレコードを読み取ることができます:

# By Vamei

import sqlite3

conn = sqlite3.connect('test.db')
c = conn.cursor()

# retrieve one record
c.execute('SELECT name FROM category ORDER BY sort')
print(c.fetchone())
print(c.fetchone())

# retrieve all records as a list
c.execute('SELECT * FROM book WHERE book.category=1')
print(c.fetchall())

# iterate through the records
for row in c.execute('SELECT name, price FROM book ORDER BY sort'):
  print(row)


更新と削除

レコードを更新または削除できます:

# By Vamei

conn = sqlite3.connect("test.db")
c = conn.cursor()

c.execute('UPDATE book SET price=? WHERE id=?',(1000, 1))
c.execute('DELETE FROM book WHERE id=2')

conn.commit()
conn.close()



テーブル全体を直接削除することもできます:

c.execute('DROP TABLE book')



test.db を削除すると、データベース全体が削除されます。

概要

sqlite3 は SQLite への単なるインターフェイスです。 SQLite データベースを上手に使いたい場合は、リレーショナル データベースに関する知識をさらに学ぶ必要があります。

以上がPythonデータベースsqlite3適用方法を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。