PythonのMySQLの使い方|接続やselect、insertのやり方など解説

スポンサーリンク

この記事では、PythonのMySQLデータベースを開発し、統合する方法について説明します。


スポンサーリンク

MySQLとは

MySQL はオープンソースのリレーショナルデータベース管理システムで、テーブルの形でデータを保存するのに使用することができます

また、テーブルとは、列と行からなる関連データの集合体のことです。

MySQLは広く使われている無料のデータベースソフトウェアで、サーバー上で動作し、その上で実行できるさまざまな操作を提供します。

確かに、私たちのPythonプログラムにMySQLを組み込んで、MySQLサーバー上のデータベース上でデータトランザクションを実行することができます


PythonにMySQLをインストールする

PythonのMySQLは、既に提供されている様々なモジュールや技術を使って利用することができます

そのうちのいくつかを紹介します。

  1. MySQLコネクタPython
  2. PyMySQL
  3. MySQLDB
  4. mysqlclient
  5. OurSQL

上記の技術はすべて、PEP 249 に従って MySQL データベースに接続し、操作を実行するために同じ構文とメソッドを使用します。

したがって、上記のモジュールのいずれかを使用して、MySQLデータベースサーバーにアクセスすることができます

また、1つだけインストールするのも理にかなっています。

以下のように、シェルで簡単なPIPコマンドを使ってインストールすることができます

pip install pymysql

ここでは、PyMySQLを例にしています。

始める前に、あなたのシステムにMySQLデータベースが設定され、それが正しく動作していることを確認してください。

接続を開始するために、データベースのログイン名とパスワードが設定されていること。


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 を更新しようとします。

Initial Phpmyadmin
Initial phpMyAdmin

結果は以下の通りです。

Create New Database
Create New Database

更新が成功したことがわかります。

5. Python MySQL Delete

それでは、カーソルクエリを使用してデータセットを削除してみましょう。

ここでは、Standard > 8を持つエントリを削除しようとします。

この場合、1つだけです(StudentID 4 with Standard 9)。

Table
Table students is created

結果は以下の通りです。

After Insertion
After Insertion
Update Output
Update Output

削除が成功したことは明らかです。

6. Python MySQL でテーブルを削除する

MySQL では、DROP クエリを使用してテーブルを削除することもできます。

これは、テーブルを削除してその名前を再利用するため、あるいはテーブル名の衝突を避けるために使用します。

Delete Output
Delete Output

上記のコードでは、以前に作成したテーブル students を削除しています。


Pythonの利点 MySQLの利点

  • MySQL は、Oracle が提供するフリーでメンテナンスが行き届いているソフトウェアです。したがって、完全に信頼できるものです。
  • 使いやすく、高速で、無料です。
  • 構造化問い合わせ言語(Structured Query Language)の基本的な知識のみが必要です。
  • Pythonで作成したデータベースは、他のプラットフォームからアクセスすることができます。
  • MySQLサーバーに接続するための様々なモジュールがあります。

まとめ

この記事では、PythonでMySQLを使用することを理解しました。

また、データベースに対するCRUD操作について詳しく説明するために、例を取りました。

この記事がPython MySQLの基本を理解する助けになれば幸いです。

さらにMySQLに関する質問がある場合は、以下のコメント欄からお気軽にどうぞ。


タイトルとURLをコピーしました