Pythonは、sqlite3、MySQLdb、psycopg2など、データベースとの連携に関連するいくつかのモジュールを提供しています。これらのモジュールを使用することで、データの保存、取得、操作を効率的に行うことができます。Python言語とSQL構文の基本的な理解があれば、データベースを効果的かつ効率的に構築、変更、管理することができます。
Pythonを使用したデータベース作成の手順
ステップ1
使用するデータベース管理システムに合わせて、データベースアダプタをインストールします。例えば、SQLiteを使用する場合はsqlite3モジュールを、MySQLの場合はMySQLdbモジュールを、PostgreSQLの場合はpsycopg2をインストールします。このチュートリアルでは、SQLite、MongoDB、MySQLdbを考えます。PythonコードでSQLiteを使用するには、sqlite3モジュールをインポートします。
import sqlite3
適切なモジュールをインストールしたら、データベースへの接続を作成する必要があります。これはPythonコードとデータベースの間の架け橋となり、コマンドの送信と結果の受信を可能にします。例えば、SQLiteでは以下のコードを使用して接続を作成できます。
school.dbというデータベースの例では、以下のコードのように接続します。
conn = sqlite3.connect('school.db')
ステップ2
データベース内にテーブルを作成します。データベース内にテーブルを作成するためには、接続から取得したカーソルオブジェクトを使用してSQLステートメントを記述する必要があります。例えば、”id”、”username”、”salary”、”department”、”email”のカラムを持つ”employees”という名前のテーブルを作成するには、以下のコードを使用します:
conn = sqlite3.connect('school.db')
cursor = conn.cursor()
cursor.execute('''
CREATE TABLE employees (
id INTEGER PRIMARY KEY,
username TEXT,
email,
salary REAL,
department TEXT
)
''')
ステップ 3
データベースからデータを挿入、更新、取得するには、SQLコマンドとカーソルオブジェクトを使用します。テーブルにデータを追加するには、”INSERT INTO” SQLステートメントを使用できます。データを保存するには、`commit()`メソッドを使用します。例えば、以下のコードは”employees”テーブルにデータを挿入します:
conn = sqlite3.connect('school.db')
cursor = conn.cursor()
cursor.execute("INSERT INTO employees (username, email, salary, department) VALUES ('Joseph', 'joseph@gmail,com' 70000, 'IT')")
conn.commit()
ステップ 4
テーブルからデータを取得します。テーブルからデータを取得するには、”SELECT” SQLステートメントを使用できます。例えば、”users”テーブルからすべてのユーザーを取得するには、以下のコードを使用できます:
cursor.execute("SELECT * FROM employees")
rows = cursor.fetchall()
for row in rows:
print(row)
ステップ 5
CREATE VIEWステートメントを実行してビューを作成し、カーソルオブジェクトの`execute()`メソッドを使用してCREATE VIEWステートメントを実行します。
# CREATE VIEWステートメントを実行
cursor.execute('''
CREATE VIEW employees_view AS
SELECT name, age, department, email, FROM employees;
''')
ステップ 6
接続を閉じます。データベースの作業が完了したら、リソースを解放するために接続を閉じることが重要です。接続オブジェクトのclose()メソッドを使用して接続を閉じることができます。例えば:
conn.commit()
conn.close()
MySQLdbのサンプル
MySQLdbでデータベースを作成するには、MYSQLdbモジュールをインポートし、`connect()`メソッドを使用してデータベースに接続します。カーソルを作成し、SQLコマンドを実行するために使用できます。`execute()`メソッドはテーブルを作成し、データを挿入するために使用されます。変更をコミットした後、カーソルを使用してテーブルからデータを選択し、`fetchall()`メソッドを使用してすべてのデータを取得します。最後に、カーソルとデータベースへの接続を閉じます。
import MySQLdb
# データベースに接続
conn = MySQLdb.connect(host="localhost", user="std", passwd="@12343!J", db="school.db")
# SQLコマンドを実行するカーソルを作成
cursor = conn.cursor()
# テーブルを作成
cursor.execute("""
CREATE TABLE employees (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255),
salary DECIMAL(10,2),
department VARCHAR(255)
)
""")
# テーブルにデータを挿入
cursor.execute("""
INSERT INTO employees (name, salary, department)
VALUES
("Joseph", 70000, "IT"),
("Jane", 80000, "Marketing")
""")
# データベースへの変更をコミット
conn.commit()
# テーブルからデータを選択
cursor.execute("SELECT * FROM employees")
# すべてのデータを取得
employees = cursor.fetchall()
# データを表示
for employee in employees:
print(employee)
# カーソルと接続を閉じる
cursor.close()
conn.close()
MongoDBのサンプル
pymongoモジュールをインポートし、`MongoClient()`クラスを使用してデータベースに接続します。その後、データベースへの参照とSQLのテーブルに相当するコレクションへの参照を取得します。`insert_many()`メソッドはコレクションにデータを挿入するために使用されます。`find()`メソッドはコレクションからデータを照会し、forループを使用してデータを取得します。最後に、`close()`メソッドを使用してデータベースへの接続を閉じます。
from pymongo import MongoClient
# データベースに接続
client = MongoClient("mongodb://localhost:27017/")
# データベースへの参照を取得
db = client["school.db"]
# SQLのテーブルに相当するコレクションへの参照を取得
collection = db["employees"]
# コレクションにデータを挿入
employee1 = { "name": "Joseph", "salary": 70000, "department": "IT" }
employee2 = { "name": "Jane", "salary": 80000, "department": "Marketing" }
collection.insert_many([employee1, employee2])
# コレクションからデータを照会
employees = collection.find()
# データを表示
for employee in employees:
print(employee)
# 接続を閉じる
client.close()
結論
結論として、PythonはMySQLやMongoDBなどの異なるデータベースと対話するための複数のモジュールを提供しています。MySQLデータベースと対話するためにMySQLdbモジュールが使用され、MongoDBデータベースと対話するためにpymongoモジュールが使用されます。これらのモジュールを使うことで、開発者はテーブルの作成、データの挿入、クエリの実行など、一般的なデータベース操作を簡単に行うことができます。Pythonのシンプルさと使いやすさのおかげで、データベース駆動型アプリケーションの開発において人気の選択肢となっています。初心者であろうと経験豊富な開発者であろうと、これらのモジュールを使用することで、Pythonでのデータベース操作は楽になります。
Source:
https://dzone.com/articles/an-overview-of-creating-databases-with-python-2