PythonでMySQLに接続する方法【初心者向け】

初心者向けにPythonでMySQLに接続する方法について解説しています。MySQL環境のインストール方法と基本の操作を覚え、データベースの管理を行えるようにしましょう。MySQL のデータベース 「mysql」にある「user」テーブルの列を表示しています。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

PythonでMySQLに接続する方法について解説します。

Pythonについてそもそもよく分からないという方は、Pythonとは何なのか解説した記事をまずご覧ください。

 

なお本記事は、TechAcademyのPythonオンライン講座の内容をもとにしています。

 

田島悠介

今回は、Pythonに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

MySQLに接続する方法について詳しく説明していくね!

大石ゆかり

お願いします!

 

接続用のドライバーのインストール方法

Python からMySQL に接続するには、 mysqlclient という接続用のドライバーを使います。mysqlclient は以下のコマンドでインストールします。パソコンがMacの場合はターミナル、Windowsの場合はコマンドプロンプトから実行します。

なお、事前に Python のインストールが必要です。

pip install mysqlclient

インストールした際、「OSError: mysql_config not found」や「Command “python setup.py egg_info” failed with error code 1…」などと表示され、インストールに失敗する場合があります。その場合は「mysql-connector-c」というライブラリのインストールが必要です。パソコンがMacの場合はターミナルから以下のように入力します。

brew install mysql-connector-c

Windowsの場合は、公式サイトから、インストーラーをダウンロードして実行します。

https://dev.mysql.com/downloads/connector/c/

その他の環境の場合など、詳しくは公式サイトを参考にして下さい。

https://github.com/PyMySQL/mysqlclient-python

 

PythonでMySQLに接続する書き方

MySQL環境が無い場合は事前にインストールしておきましょう。MAMPというツールをインストールすると、MySQLや管理ツール「phpMyAdmin」などを一緒にインストールできて便利です。

誰でもできる!MAMPのインストール方法

MySQLに接続する書き方は以下の通りです。

import MySQLdb

# 接続する
 conn = MySQLdb.connect(
 user='root',
 passwd='root',
 host='localhost',
 db='mysql')

# 接続を閉じる
 con.close
  • user:MySQLに接続するユーザー名
  • passwd:パスワード
  • host:MySQLを実行しているパソコン名。別のパソコン(サーバー)を指定することも可能です。
  • db:MySQLの中のデータベースを選択

ただ、接続するだけなので、実行しても何も表示されません。なお、実行すると以下のエラーメッセージが発生する場合があります。これはtmpフォルダに対する権限によるものです。

(2002, "Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)")

その場合は、connの部分に「unix_socket = ‘/Applications/MAMP/tmp/mysql/mysql.sock’,」を追記します。

conn = MySQLdb.connect(
    unix_socket = '/Applications/MAMP/tmp/mysql/mysql.sock',
    user='root',
    passwd='root',
    host='localhost',
    db='mysql')

 

[PR] Pythonで挫折しない学習方法を動画で公開中

実際に接続して操作してみよう

実際に Python から MySQL に接続する操作をしてみましょう。今回のサンプルプログラムでは、 MySQL のデータベース 「mysql」にある「user」テーブルの列を表示しています。

ソースコード

import MySQLdb

# 接続する 
conn = MySQLdb.connect(
 unix_socket = '/Applications/MAMP/tmp/mysql/mysql.sock',
 user='root',
 passwd='root',
 host='localhost',
 db='mysql')

# カーソルを取得する
cur = conn.cursor()

# SQL(データベースを操作するコマンド)を実行する
# userテーブルから、HostとUser列を取り出す
sql = "select Host, User from user"
cur.execute(sql)

# 実行結果を取得する
rows = cur.fetchall()

# 一行ずつ表示する
for row in rows:
 print(row)

cur.close
conn.close

実行結果は以下のようになります。

('127.0.0.1', 'root')
('::1', 'root')
('bookle-5.local', '')
('bookle-5.local', 'root')
('localhost', '')
('localhost', 'root')

 

この記事を監修してくれた方

太田和樹(おおたかずき)
ITベンチャー企業のPM兼エンジニア

普段は主に、Web系アプリケーション開発のプロジェクトマネージャーとプログラミング講師を行っている。守備範囲はフロントエンド、モバイル、サーバサイド、データサイエンティストと幅広い。その幅広い知見を生かして、複数の領域を組み合わせた新しい提案をするのが得意。

開発実績:画像認識技術を活用した駐車場混雑状況把握(実証実験)、音声認識を活用したヘルプデスク支援システム、Pepperを遠隔操作するアプリの開発、大規模基幹系システムの開発・導入マネジメント

地方在住。仕事のほとんどをリモートオフィスで行う。通勤で消耗する代わりに趣味のDIYや家庭菜園、家族との時間を楽しんでいる。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

オンラインのプログラミングスクールTechAcademyではPythonを使って機械学習の基礎を学ぶPythonオンライン講座を開催しています。

初心者向けの書籍を使って人工知能(AI)や機械学習について学ぶことができます。

現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間で習得することが可能です。

また、現役エンジニアから学べる無料のプログラミング体験会も実施しているので、ぜひ参加してみてください。