この章では、PythonプログラムでSQLiteを使用する方法を学びます。
インストール
Sqlite3は、Gerhard Haringによって書かれたsqlite3モジュールを使用してPythonと統合することができます。 これは、DB-API2.0仕様に準拠したSQLインタフェースを提供しますPEP249によって記述されています。 する必要はないイモジュールは別途で出荷されるデフォルトとPythonのバージョン2.5.x以降。,
sqlite3モジュールを使用するには、まずデータベースを表すconnectionオブジェクトを作成し、必要に応じてcursorオブジェクトを作成する必要があります。
Python sqlite3モジュールApi
以下は重要なsqlite3モジュールルーチンであり、PythonプログラムからSQLiteデータベースを操作するための要件で十分です。 より洗練されたアプリケーションを探しているなら、Python sqlite3モジュールの公式文書を調べることができます。
Sr.No—–, | API&説明 |
---|---|
1 |
sqlite3.connect(database) このAPIはSQLiteデータベースファイルへの接続を開きます。 “:Memory:”を使用すると、ディスク上ではなくRAM内にあるデータベースへのデータベース接続を開くことができます。 データベー 複数の接続によってデータベースにアクセスし、いずれかのプロセスがデータベースを変更すると、SQLiteデータベースはそのトランザクションがコミットされるま, Timeoutパラメーターには、例外が発生するまでロックが解除されるまで接続が待機する時間を指定します。 Timeoutパラメーターのデフォルトは5.0(五秒)です。 指定されたデータベース名が存在しない場合、この呼び出しはデータベースを作成します。 現在のディレクトリ以外の場所でデータベースを作成する場合は、必要なパスでfilenameを指定することもできます。 |
2 |
コネクション。cursor() このルーチンは、Pythonを使用したデータベースプログラミング全体で使用されるcursorを作成します。, このメソ 指定する場合、これはsqlite3を拡張するカスタムcursorクラスである必要があります。カーソル。 |
3 |
カーソル。execute(sql) このルーチンはSQLステートメントを実行します。 SQLステートメントは、パラメータ化できます(SQLリテラルの代わりにプレースホルダーなど)。 Sqlite3モジュ たとえば−カーソル。execute(“insert into people values(?, ?)”,(who,age)) |
4 |
接続。,execute(sql) このルーチンは、cursorオブジェクトによって提供される上記のexecuteメソッドのショートカットであり、cursorメソッドを呼び出して中間cursorオブジェクトを |
5 |
カーソル。executemany(sql,seq_of_parameters) このルーチンは、シーケンスsqlで見つかったすべてのパラメータシーケンスまたはマッピングに対してSQLコマンドを実行します。 |
6 |
コネクション。,executemany(sql) このルーチンは、cursorメソッドを呼び出して中間cursorオブジェクトを作成し、cursorを呼び出すショートカットです。指定されたパラメータを持つs executemanyメソッド。 |
7 |
カーソル。executescript(sql_script) このルーチンは、スクリプトの形式で提供された複数のSQLステートメントを一度に実行します。 最初にCOMMITステートメントを発行し、パラメータとして取得したSQLスクリプトを実行します。 すべてのSQLステートメントは、セミコロン(;)で区切る必要があります。 |
8 |
コネクション。,executescript(sql_script) このルーチンは、cursorメソッドを呼び出して中間cursorオブジェクトを作成し、指定されたパラメータでカーソルのexecutescriptメソッドを呼び出すショートカットです。 |
9 |
接続します。total_changes() このルーチンは、データベース接続が開かれてから変更、挿入、または削除されたデータベース行の合計数を返します。 |
10 |
接続します。commit() このメソッドは現在のトランザクションをコミットします。, このメソッドを呼び出さないと、最後にcommit()を呼び出してから行ったことは、他のデータベース接続からは表示されません。 |
11 |
接続します。rollback() このメソッドは、commit()の最後の呼び出し以降のデータベースへの変更をロールバックします。 |
12 |
接続します。close() このメソッドは、データベース接続を閉じます。 これは自動的にcommit()を呼び出さないことに注意してくださ 最初にcommit()を呼び出さずにデータベース接続を閉じるだけの場合、変更は失われます! |
13 |
カーソル。,fetchone() このメソッドは、クエリ結果セットの次の行をフェッチし、単一のシーケンスを返します。 |
14 |
カーソル。fetchmany() このルーチンは、クエリ結果の次の行セットを取得し、リストを返します。 使用可能な行がなくなると、空のリストが返されます。 このメソッドは、sizeパラメーターで示される数の行を取得しようとします。 |
15 |
カーソル。fetchall() このルーチンは、クエリ結果のすべての(残りの)行を取得し、リストを返します。, 使用可能な行がない場合は、空のリストが返されます。 |
データベースに接続
以下のPythonコードは、既存のデータベースに接続する方法を示しています。 データベースが存在しない場合、データベースが作成され、最後にデータベースオブジェクトが返されます。
#!/usr/bin/pythonimport sqlite3conn = sqlite3.connect('test.db')print "Opened database successfully";
ここでは、データベース名を特別な名前として指定することもできますmemory:RAMにデータベースを作成します。 さて、上記のプログラムを実行してデータベーステストを作成しましょう。現在のディレクトリのdb。 あなたの要件に従ってパスを変更することができます。, 上記のコードを保持してくださいsqlite.py 以下に示すようにファイルして実行します。 データベースが正常に作成されると、次のメッセージが表示されます。
$chmod +x sqlite.py$./sqlite.pyOpen database successfully
テーブルを作成します
以下のPythonプログラムは、以前に作成したデータベースにテーブルを作成するために使用されます。
上記のプログラムが実行されると、テストにCOMPANYテーブルが作成されます。,dbそして、それは次のメッセージが表示されます−
Opened database successfullyTable created successfully
挿入操作
以下のPythonプログラムは、上記の例で作成された会社テーブルにレコードを作成する方法を示しています。
上記のプログラムが実行されると、COMPANYテーブルに指定されたレコードが作成され、次の二つの行が表示されます−
Opened database successfullyRecords created successfully
SELECT Operation
以下のPythonプログラムは、上記の例で作成されたCOMPANYテーブルからレコードを取得して表示する方法を示しています。,
上記のプログラムが実行されると、次の結果が生成されます。
更新操作
以下のPythonコードは、UPDATE文を使用してレコードを更新し、COMPANYテーブルから更新されたレコードを取得して表示する方法を示しています。
上記のプログラムが実行されると、次の結果が生成されます。
Opened database successfullyTotal number of rows updated : 1ID = 1NAME = PaulADDRESS = CaliforniaSALARY = 25000.0ID = 2NAME = AllenADDRESS = TexasSALARY = 15000.0ID = 3NAME = TeddyADDRESS = NorwaySALARY = 20000.0ID = 4NAME = MarkADDRESS = Rich-MondSALARY = 65000.0Operation done successfully
削除操作
次のPythonコードは、DELETE文を使用してレコードを削除し、残りのレコードをCOMPANYテーブルから取得して表示する方法を示しています。,
When the above program is executed, it will produce the following result.
Opened database successfullyTotal number of rows deleted : 1ID = 1NAME = PaulADDRESS = CaliforniaSALARY = 20000.0ID = 3NAME = TeddyADDRESS = NorwaySALARY = 20000.0ID = 4NAME = MarkADDRESS = Rich-MondSALARY = 65000.0Operation done successfully