この記事では、PythonのMySQLデータベースを開発し、統合する方法について説明します。
MySQLとは
MySQL はオープンソースのリレーショナルデータベース管理システムで、テーブルの形でデータを保存するのに使用することができます。
また、テーブルとは、列と行からなる関連データの集合体のことです。
MySQLは広く使われている無料のデータベースソフトウェアで、サーバー上で動作し、その上で実行できるさまざまな操作を提供します。
確かに、私たちのPythonプログラムにMySQLを組み込んで、MySQLサーバー上のデータベース上でデータトランザクションを実行することができます。
PythonにMySQLをインストールする
PythonのMySQLは、既に提供されている様々なモジュールや技術を使って利用することができます。
そのうちのいくつかを紹介します。
- MySQLコネクタPython
- PyMySQL
- MySQLDB
- mysqlclient
- OurSQL
上記の技術はすべて、PEP 249 に従って MySQL データベースに接続し、操作を実行するために同じ構文とメソッドを使用します。
したがって、上記のモジュールのいずれかを使用して、MySQLデータベースサーバーにアクセスすることができます。
また、1つだけインストールするのも理にかなっています。
以下のように、シェルで簡単なPIPコマンドを使ってインストールすることができます。
pip install pymysql |
ここでは、PyMySQLを例にしています。
始める前に、あなたのシステムにMySQLデータベースが設定され、それが正しく動作していることを確認してください。
接続を開始するために、データベースのログイン名とパスワードが設定されていること。
この記事もチェック:Pythonのstatisticsモジュールで便利なメソッドを7つ紹介する
Pythonの基本的なメソッド MySQL
さて、pymysql
をインストールしたので、今日使う基本的なメソッドをいくつか見てみましょう。
1. MySQL 接続()
pymysql.connect()メソッドは Python から MySQL データベースへの接続を確立して、
MySQLConnection` オブジェクトを返します。
このオブジェクトはデータベース全体にアクセスし、他の操作を行うために使用されます。
接続するデータベースの仕様として、ホスト、ユーザー、パスワード、データベースなどのパラメータを受け取ります。
-
user
– ローカルサーバーの場合、ユーザーは “root” と指定する必要があります。 - パスワード` – ユーザーを作成するときにパスワードとして使用したものに依存します。データベースはパスワードがない場合もあります(この例では)。
- ホスト
- xamppを使用しているローカルサーバでは、データベースにアクセスするために
localhost` を使用することができます。また、サーバーのIPアドレスや名前を使って、ホストにアクセスすることもできます。 -
database
– 使用するデータベース名です。すでにデータベースを作成している場合は、ここに名前を入力するだけでよい。
2. MySQL カーソル()
cursor()` メソッドはカーソルオブジェクトを生成し、それを使ってデータベース上で CRUD(Create, Retrieve, Update, and Delete) 操作を実行することができます。
3. MySQL execute()
execute()`メソッドは、先に作成したカーソルを使って渡されたSQLクエリを実行します。
4. MySQL close()
カーソルと MySQLConnection クラスの両方で定義されている close()
メソッドは、それぞれのオブジェクトを閉じるために使用されます。
5. MySQL commit()
commit()メソッドは
COMMIT` ステートメントを MySQL サーバーに送信し、現在のデータトランザクションをコミットします。
6. MySQL fetchall()
fetchall()` メソッドは、クエリ結果セットのすべての行をフェッチして、カーソルオブジェクトを使用してタプルのリストを返します。
7. MySQL is_connected()
このメソッドは、MySQL サーバーへの接続が可能かどうかをチェックします。
接続可能な場合は True
を、接続できない場合は False
を返します。
Python入門 MySQL入門
この記事では、Xamppコントロールパネルを使って、ローカルサーバに接続し、データベースを作成します。
XamppでApacheとMySQLを起動すると、その作業ができます。
さらに、以下のようにローカルサーバーのインターフェイスを見るために、直接https://localhost/phpmyadmin/
をヒットすることができます。
import pymysql
#server connection mydb = pymysql.connect(
host = "localhost" ,
user = "root" ,
passwd = ""
) mycursor = mydb.cursor() #cursor created
#creating database with name classdb mycursor.execute( "CREATE DATABASE classdb;" )
|
ここで、mydatabaseとstudentsdbは先に作成したデータベースです。
PythonでMySQLデータベースを作成する
以前に作成したデータベースがない場合は、cursor.execute()
メソッドを使用してCREATEクエリを実行することで簡単に作成することができます。
サーバーとの接続を確立した後、以下のコードを見てください。
以下のコードを見てください。
import pymysql
#server connection mydb = pymysql.connect(
host = "localhost" ,
user = "root" ,
database = "classdb" , #database created before
passwd = ""
) mycursor = mydb.cursor() #cursor created
#work with the cursor here like printing initial database data #closing the cursor mycursor.close() |
import pymysql
#server connection mydb = pymysql.connect(
host = "localhost" ,
user = "root" ,
database = "classdb" , #database
passwd = ""
) mycursor = mydb.cursor() #cursor created
#work with the cursor query = "CREATE TABLE Students(StudentID int PRIMARY KEY AUTO_INCREMENT, Name CHAR(20), Lastname CHAR(20),Standard int);"
mycursor.execute(query) #closing the cursor mycursor.close() |
上記のコードを実行した後、phpMyAdminを使用してデータベースで上記の変更を確認することができます。
ここでは、新しいデータベース classdb
が正常に作成されています。
すでにデータベースがある場合は、connect()
メソッド内で名前を指定するだけで、簡単に接続することができます。
以下のようになります。
import pymysql
#server connection mydb = pymysql.connect(
host = "localhost" ,
user = "root" ,
database = "classdb" , #database
passwd = ""
) mycursor = mydb.cursor() #cursor created
#work with the cursor query1 = "INSERT INTO students(Name, Lastname, Standard) VALUES('Anik', 'Das', 6);"
query2 = "INSERT INTO students(Name, Lastname, Standard) VALUES('Subhash', 'Neel', 8);"
query3 = "INSERT INTO students(Name, Lastname, Standard) VALUES('Prateek', 'Neel', 8);"
query4 = "INSERT INTO students(Name, Lastname, Standard) VALUES('Prem', 'Dutta', 9);"
mycursor.execute(query1) mycursor.execute(query2) mycursor.execute(query3) mycursor.execute(query4) #closing the db mydb.commit() mydb.close() |
PythonのMySQLデータベースに対する操作
このセクションでは、MySQLデータベースで実行できるさまざまな操作(CRUD)に焦点を当てます。
1. Python MySQL – テーブルの作成
使いたいデータベースに接続し、カーソルオブジェクトを作成したら、execute()
メソッドを使って簡単にクエリを実行し、テーブルをCREATEすることができます。
import pymysql
#server connection mydb = pymysql.connect(
host = "localhost" ,
user = "root" ,
database = "classdb" , #database
passwd = ""
) mycursor = mydb.cursor() #cursor
#work with the cursor res = "Select * from students;"
#executing the query mycursor.execute(res) rows = mycursor.fetchall()
#showing the rows for row in rows:
print (row)
#closing the db mydb.commit() mydb.close() |
( 1 , 'Anik' , 'Das' , 6 )
( 2 , 'Subhash' , 'Neel' , 8 )
( 3 , 'Prateek' , 'Neel' , 8 )
( 4 , 'Prem' , 'Dutta' , 9 )
|
このように、StudentID、Name、Lastname、Standardのカラムを持つテーブルが作成されます。
2. Python MySQL Insert
テーブルを作成したので、カーソルオブジェクトを使用してクエリを実行することで、行を挿入することができます。
import pymysql
#server connection mydb = pymysql.connect(
host = "localhost" ,
user = "root" ,
database = "classdb" , #database
passwd = ""
) mycursor = mydb.cursor() #cursor
#query to update database data update_query = "UPDATE students set Lastname = 'Seth' WHERE StudentID = 2"
#executing the query mycursor.execute(update_query) #showing the rows res = "Select * from students;"
mycursor.execute(res) rows = mycursor.fetchall()
for row in rows:
print (row)
#closing the db mydb.commit() mydb.close() |
import pymysql
#server connection mydb = pymysql.connect(
host = "localhost" ,
user = "root" ,
database = "classdb" , #database
passwd = ""
) mycursor = mydb.cursor() #cursor
#query to delete database data delete_query = "DELETE FROM students WHERE Standard > 8"
#executing the query mycursor.execute(delete_query) #showing the rows res = "Select * from students;"
mycursor.execute(res) rows = mycursor.fetchall()
for row in rows:
print (row)
#closing the db mydb.commit() mydb.close() |
行はデータベースに正常に挿入されました。
3. Python セレクト MySQL
先に述べたように、fetchall()
メソッドはカーソルオブジェクトを使用して、クエリ結果セットの全ての行をフェッチし、タプルのリストを返します。
したがって、データベースからユニークなデータや必要なデータを選択するクエリを適用することで、カーソルの fetchall()
メソッドと for-loop
を使って、それらを表示することができます。
( 1 , 'Anik' , 'Das' , 6 )
( 2 , 'Subhash' , 'Seth' , 8 )
( 3 , 'Prateek' , 'Neel' , 8 )
|
結果は以下の通りです。
#query to drop table drop_query = "DROP TABLE IF EXISTS students;"
#executing the query mycursor.execute(drop_query) |
4. Python MySQLアップデート
さらに、データのセットを更新したい場合は、以下のような UPDATE クエリを使用します。
ここでは、StudentID = 2 (すなわち Subhash) の学生の Lastname
を更新しようとします。
結果は以下の通りです。
更新が成功したことがわかります。
5. Python MySQL Delete
それでは、カーソルクエリを使用してデータセットを削除してみましょう。
ここでは、Standard > 8
を持つエントリを削除しようとします。
この場合、1つだけです(StudentID 4 with Standard 9)。
結果は以下の通りです。
削除が成功したことは明らかです。
6. Python MySQL でテーブルを削除する
MySQL では、DROP クエリを使用してテーブルを削除することもできます。
これは、テーブルを削除してその名前を再利用するため、あるいはテーブル名の衝突を避けるために使用します。
上記のコードでは、以前に作成したテーブル students
を削除しています。
Pythonの利点 MySQLの利点
- MySQL は、Oracle が提供するフリーでメンテナンスが行き届いているソフトウェアです。したがって、完全に信頼できるものです。
- 使いやすく、高速で、無料です。
- 構造化問い合わせ言語(Structured Query Language)の基本的な知識のみが必要です。
- Pythonで作成したデータベースは、他のプラットフォームからアクセスすることができます。
- MySQLサーバーに接続するための様々なモジュールがあります。
まとめ
この記事では、PythonでMySQLを使用することを理解しました。
また、データベースに対するCRUD操作について詳しく説明するために、例を取りました。
この記事がPython MySQLの基本を理解する助けになれば幸いです。
さらにMySQLに関する質問がある場合は、以下のコメント欄からお気軽にどうぞ。