SQLite クラシック チュ...login
SQLite クラシック チュートリアル
著者:php.cn  更新時間:2022-04-13 17:05:02

SQLite - Python


インストール

SQLite3 は、sqlite3 モジュールを使用して Python と統合できます。 sqlite3 モジュールは Gerhard Haring によって作成されました。 PEP 249 に記載されている DB-API 2.0 仕様と互換性のある SQL インターフェイスを提供します。 Python 2.5.x 以降のバージョンにはデフォルトでこのモジュールが付属しているため、このモジュールを個別にインストールする必要はありません。

sqlite3 モジュールを使用するには、まずデータベースを表す接続オブジェクトを作成する必要があります。次に、オプションですべての SQL ステートメントの実行に役立つカーソル オブジェクトを作成できます。

Python sqlite3 モジュール API

以下は、Python プログラムで SQLite データベースを使用するニーズを満たすことができる重要な sqlite3 モジュール プログラムです。さらに詳細が必要な場合は、Python sqlite3 モジュールの公式ドキュメントを確認してください。

シリアル番号APIと説明
1sqlite3.connect(database [,timeout,otherOptional argument])

このAPIは、SQLiteデータベースファイルデータベースへのリンクを開きます。 「:memory:」を使用すると、ディスク上ではなく RAM 上のデータベースへのデータベース接続を開くことができます。データベースが正常に開かれると、接続オブジェクトが返されます。

データベースが複数の接続によってアクセスされ、そのうちの 1 つがデータベースを変更すると、トランザクションがコミットされるまで SQLite データベースはロックされます。 timeout パラメータは、例外が発生して接続が切断されるまで、接続がロックを待機する時間を示します。タイムアウトパラメータのデフォルトは 5.0 (5 秒) です。

指定されたデータベース名 filename が存在しない場合、この呼び出しによりデータベースが作成されます。現在のディレクトリにデータベースを作成したくない場合は、ファイル名をパスで指定すると、どこにでもデータベースを作成できます。

2connection.cursor([cursorClass])

このルーチンは、Python データベース プログラミングで使用される cursor を作成します。このメソッドは、単一のオプションのパラメータcursorClassを受け入れます。このパラメーターを指定する場合は、sqlite3.Cursor を拡張するカスタム カーソル クラスである必要があります。

3cursor.execute(sql [, オプションのパラメータ])

このルーチンは SQL ステートメントを実行します。 SQL ステートメントはパラメータ化できます (つまり、SQL テキストの代わりにプレースホルダーを使用します)。 sqlite3 モジュールは、疑問符と名前付きプレースホルダー (名前付きスタイル) の 2 種類のプレースホルダーをサポートします。

例:cursor.execute("insert into people value (?, ?)", (who, age))

4connection.execute(sql [, オプションのパラメータ])

このルーチンは、上で実行されたカーソル オブジェクトによって提供されるメソッドへのショートカットです。カーソル メソッドを呼び出して中間カーソル オブジェクトを作成し、指定されたパラメーターを使用してカーソルの実行メソッドを呼び出します。

5cursor.executemany(sql, seq_of_parameters)

このルーチンは、すべてのパラメーターまたは seq_of_parameters 内のマッピングに対して SQL コマンドを実行します。

6connection.executemany(sql[,parameters])

このルーチンは、cursor メソッドを呼び出して作成された中間カーソル オブジェクトのショートカットであり、指定されたパラメータを渡します カーソルのexecutemany メソッドを呼び出します。

7cursor.executescript(sql_script)

スクリプトを受信すると、このルーチンは複数の SQL ステートメントを実行します。まず COMMIT ステートメントを実行し、次にパラメーターとして渡された SQL スクリプトを実行します。すべての SQL ステートメントはセミコロン (;) で区切る必要があります。

8connection.executescript(sql_script)

このルーチンは、cursor メソッドを呼び出すことによって作成された中間カーソル オブジェクトのショートカットであり、指定されたパラメーターを使用してカーソルのexecutescript を呼び出します。

9connection.total_changes()

このルーチンは、データベース接続が開かれてから変更、挿入、または削除されたデータベース行の合計数を返します。

10connection.commit()

このメソッドは、現在のトランザクションをコミットします。このメソッドを呼び出さない場合、最後に commit() を呼び出してから実行されたアクションは他のデータベース接続からは認識されません。

11connection.rollback()

このメソッドは、commit() の最後の呼び出し以降にデータベースに加えられた変更をロールバックします。

12connection.close()

このメソッドはデータベース接続を閉じます。これは自動的に commit() を呼び出すわけではないことに注意してください。 commit() メソッドを呼び出さずにデータベース接続を閉じると、加えた変更はすべて失われます。

13cursor.fetchone()

このメソッドは、クエリ結果セットの次の行を取得し、利用可能なデータがなくなった場合は、None を返します。

14cursor.fetchmany([size=cursor.arraysize])

このメソッドは、クエリ結果セット内の次の行グループを取得し、リストを返します。使用可能な行がなくなると、空のリストが返されます。このメソッドは、size パラメーターで指定された数の行を取得しようとします。

15cursor.fetchall()

このルーチンは、クエリ結果セット内のすべての (残りの) 行をフェッチし、リストを返します。利用可能な行がない場合は、空のリストが返されます。

データベースに接続する

以下の Python コードは、既存のデータベースに接続する方法を示しています。データベースが存在しない場合は、データベースが作成され、データベース オブジェクトが返されます。

#!/usr/bin/python

import sqlite3

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

print "Opened database successfully";

ここで、データベース名を特定の名前 :memory: にコピーして、RAM にデータベースを作成することもできます。次に、上記のプログラムを実行して、現在のディレクトリにデータベース test.db を作成しましょう。必要に応じてパスを変更できます。上記のコードを sqlite.py ファイルに保存し、以下に示すように実行します。データベースが正常に作成されると、次のようなメッセージが表示されます:

$chmod +x sqlite.py
$./sqlite.py
Open database successfully

テーブルの作成

次の Python コード スニペットは、以前に作成したデータベースにテーブルを作成するために使用されます:

#!/usr/bin/python

import sqlite3

conn = sqlite3.connect('test.db')
print "Opened database successfully";

conn.execute('''CREATE TABLE COMPANY
       (ID INT PRIMARY KEY     NOT NULL,
       NAME           TEXT    NOT NULL,
       AGE            INT     NOT NULL,
       ADDRESS        CHAR(50),
       SALARY         REAL);''')
print "Table created successfully";

conn.close()

上記の場合プログラムが実行されると、COMPANY テーブルが test.db に作成され、以下に示すメッセージが表示されます:

Opened database successfully
Table created successfully

INSERT 操作

次の Python プログラムは、上で作成した COMPANY テーブルにレコードを作成する方法を示しています:

#!/usr/bin/python

import sqlite3

conn = sqlite3.connect('test.db')
print "Opened database successfully";

conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
      VALUES (1, 'Paul', 32, 'California', 20000.00 )");

conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
      VALUES (2, 'Allen', 25, 'Texas', 15000.00 )");

conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
      VALUES (3, 'Teddy', 23, 'Norway', 20000.00 )");

conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
      VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 )");

conn.commit()
print "Records created successfully";
conn.close()

上記のプログラムを実行すると、COMPANY テーブルに指定されたレコードが作成され、次の 2 行が表示されます:

Opened database successfully
Records created successfully

SELECT 操作

次の Python プログラムは、COMPANY テーブルからレコードを取得して表示する方法を示します。以前に作成:

#!/usr/bin/python

import sqlite3

conn = sqlite3.connect('test.db')
print "Opened database successfully";

cursor = conn.execute("SELECT id, name, address, salary  from COMPANY")
for row in cursor:
   print "ID = ", row[0]
   print "NAME = ", row[1]
   print "ADDRESS = ", row[2]
   print "SALARY = ", row[3], "\n"

print "Operation done successfully";
conn.close()

上記のプログラムを実行すると、次の結果が生成されます:

Opened database successfully
ID =  1
NAME =  Paul
ADDRESS =  California
SALARY =  20000.0

ID =  2
NAME =  Allen
ADDRESS =  Texas
SALARY =  15000.0

ID =  3
NAME =  Teddy
ADDRESS =  Norway
SALARY =  20000.0

ID =  4
NAME =  Mark
ADDRESS =  Rich-Mond
SALARY =  65000.0

Operation done successfully

UPDATE 操作

次の Python コードは、UPDATE ステートメントを使用してレコードを更新し、COMPANY テーブルから更新されたレコードを取得して表示する方法を示しています。 :

#!/usr/bin/python

import sqlite3

conn = sqlite3.connect('test.db')
print "Opened database successfully";

conn.execute("UPDATE COMPANY set SALARY = 25000.00 where ID=1")
conn.commit
print "Total number of rows updated :", conn.total_changes

cursor = conn.execute("SELECT id, name, address, salary  from COMPANY")
for row in cursor:
   print "ID = ", row[0]
   print "NAME = ", row[1]
   print "ADDRESS = ", row[2]
   print "SALARY = ", row[3], "\n"

print "Operation done successfully";
conn.close()

上記のプログラムを実行すると、次の結果が生成されます:

Opened database successfully
Total number of rows updated : 1
ID =  1
NAME =  Paul
ADDRESS =  California
SALARY =  25000.0

ID =  2
NAME =  Allen
ADDRESS =  Texas
SALARY =  15000.0

ID =  3
NAME =  Teddy
ADDRESS =  Norway
SALARY =  20000.0

ID =  4
NAME =  Mark
ADDRESS =  Rich-Mond
SALARY =  65000.0

Operation done successfully

DELETE 操作

次の Python コードは、DELETE ステートメントを使用してレコードを削除し、COMPANY テーブルから残りのレコードを取得して表示する方法を示しています。

#!/usr/bin/python

import sqlite3

conn = sqlite3.connect('test.db')
print "Opened database successfully";

conn.execute("DELETE from COMPANY where ID=2;")
conn.commit
print "Total number of rows deleted :", conn.total_changes

cursor = conn.execute("SELECT id, name, address, salary  from COMPANY")
for row in cursor:
   print "ID = ", row[0]
   print "NAME = ", row[1]
   print "ADDRESS = ", row[2]
   print "SALARY = ", row[3], "\n"

print "Operation done successfully";
conn.close()

上記のプログラムを実行すると、以下の結果が生成されます:

Opened database successfully
Total number of rows deleted : 1
ID =  1
NAME =  Paul
ADDRESS =  California
SALARY =  20000.0

ID =  3
NAME =  Teddy
ADDRESS =  Norway
SALARY =  20000.0

ID =  4
NAME =  Mark
ADDRESS =  Rich-Mond
SALARY =  65000.0

Operation done successfully

PHP中国語ウェブサイト