Python-network-programming-python-databases-and-sql

提供:Dev Guides
移動先:案内検索

Python-データベースとSQL

Pythonプログラミング言語には、データベースプログラミングのための強力な機能があります。 Pythonは、SQLite、MySQL、Oracle、Sybase、PostgreSQLなどのさまざまなデータベースをサポートしています。 Pythonは、データ定義言語(DDL)、データ操作言語(DML)、およびデータクエリステートメントもサポートしています。 データベースインターフェイスのPython標準は、Python DB-APIです。 ほとんどのPythonデータベースインターフェイスは、この標準に準拠しています。

利用可能なPythonデータベースインターフェイスのリストは次のとおりです。http://wiki.python.org/moin/DatabaseInterfaces [PythonデータベースインターフェイスとAPI]。 アクセスする必要のあるデータベースごとに個別のDB APIモジュールをダウンロードする必要があります。

この章では、Pythonプログラミング言語でのSQLiteデータベースの使用について説明します。 これは、Pythonの組み込みのsqlite3モジュールを使用して行われます。 最初にデータベースを表す接続オブジェクトを作成してから、SQLステートメントを実行するカーソルオブジェクトを作成する必要があります。

データベースに接続

次の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()

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

Opened database successfully
Table created successfully

挿入操作

次の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

操作を選択

次の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

更新操作

次の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

削除操作

次の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