English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

SQLite Python

インストール

SQLite3 SQLiteを使用できます。3 モジュールがPythonと統合されています。3 モジュールはGerhard Haringによって書かれており、PEPに基づいて提供されています。 249 DB-API 2.0仕様に準拠するSQLインターフェースを持っています。Pythonでは、APIがDBモジュールを説明しているため、このモジュールを別々にインストールする必要はありません。 2.5.x以降のバージョンでは、デフォルトでこのモジュールが含まれています。

sqliteを使用するためには3 モジュールを使用するには、まずデータベースを表す接続オブジェクトを作成する必要があります。その後、カーソルオブジェクトを作成することも選択できます。これにより、すべてのSQLステートメントを実行できます。

Python sqlite3 モジュールAPI

以下は重要なsqlite3 モジュールプログラムは、PythonプログラムでSQLiteデータベースを使用する必要がある場合にご要望に応じて使用できます。詳細について知りたい場合は、Python sqliteを確認してください。3 モジュールの公式ドキュメント。

序号API & 説明
1sqlite3.connect(database [,timeout ,他のオプションの引数])

このAPIはSQLiteデータベースファイルdatabaseへのリンクを開きます。":memory:"を使用して、ディスク上ではなくRAMにdatabaseのデータベース接続を開くことができます。データベースが成功して開かれた場合、接続オブジェクトが返されます。

データベースが複数の接続でアクセスされ、その中の1つがデータベースを変更した場合、SQLiteデータベースはロックされ、トランザクションがコミットされるまで解除されません。timeoutパラメータは、接続がロックを待つまでの時間を表し、異常で接続が切断されるまでに時間がかかることを示します。デフォルトのtimeoutパラメータは 5.0(5 秒)。

指定されたデータベース名filenameが存在しない場合、この呼び出しはデータベースを作成します。現在のディレクトリでデータベースを作成したくない場合は、パスを含むファイル名を指定して、任意の場所でデータベースを作成できます。

2connection.cursor([cursorClass])

この例程は cursor、Pythonのデータベースプログラミングで使用されます。このメソッドは、単一のオプションのパラメータcursorClassを受け取ります。このパラメータが提供された場合、それはsqlite3.Cursorのカスタムcursorクラス。

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

この例程はSQL文を実行します。このSQL文はパラメータ化(占位符を使用してSQLテキストを置き換える)できます。sqlite3 このモジュールは2種類の占位符をサポートしています:クエスションマークとネームド占位符(ネームドスタイル)。

例えば:cursor.execute("insert into people values (?, ?)", (who, age))

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

この例程は上記で実行された、光標(cursor)オブジェクトが提供するメソッドのショートカットです。この例程は、光標(cursor)メソッドを呼び出して中間の光標オブジェクトを作成し、指定されたパラメータで光標のexecuteメソッドを呼び出します。

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
データベースを成功してオープンしました

テーブルの作成

以下のPythonコードセグメントは、以前に作成したデータベースでテーブルを作成するために使用されます:

#!/usr/bin/python
import sqlite3
conn = sqlite3.connect('test.db')
print "Opened database successfully"
c = conn.cursor()
c.execute('''CREATE TABLE COMPANY
       (ID INT PRIMARY KEY     NOT NULL,
       NAME           TEXT    NOT NULL,
       AGE            INT     NOT NULL,
       ADDRESS        CHAR(50),
       SALARY         REAL);''')
print "テーブルが正常に作成されました"
conn.commit()
conn.close()

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

データベースを正常にオープンしました
テーブルが正常に作成されました

INSERT操作

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

#!/usr/bin/python
import sqlite3
conn = sqlite3.connect('test.db')
c = conn.cursor()
print "Opened database successfully"
c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \

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

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

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

      VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 )")
conn.commit()
print "レコードが正常に作成されました"
conn.close()

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

データベースを正常にオープンしました
レコードが正常に作成されました

SELECT操作

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

#!/usr/bin/python
import sqlite3
conn = sqlite3.connect('test.db')
c = conn.cursor()
print "Opened database successfully"
cursor = c.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()

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

データベースを正常にオープンしました
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
操作が正常に完了しました

UPDATE操作

以下のPythonコードは、UPDATE文を使用して任意のレコードを更新し、COMPANYテーブルから更新されたレコードを取得して表示する方法を示しています:

#!/usr/bin/python
import sqlite3
conn = sqlite3.connect('test.db')
c = conn.cursor()
print "Opened database successfully"
c.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()

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

データベースを正常にオープンしました
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
操作が正常に完了しました

DELETE操作

以下のPythonコードは、DELETE文を使用して任意のレコードを削除し、COMPANYテーブルから残りのレコードを取得して表示する方法を示しています:

#!/usr/bin/python
import sqlite3
conn = sqlite3.connect('test.db')
c = conn.cursor()
print "Opened database successfully"
c.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()

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

データベースを正常にオープンしました
削除された行の総数: 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
操作が正常に完了しました