jumper

コラム

MySQLをプログラムから使う(Connector、API)

2019年02月22日
MySQLをプログラムから使う

MySQLはウェブ系のデータベースとして高いシェアを誇っているRDB(リレーショナルデータベース)です。そのためウェブ系で良く使われるライトウェイトな言語とセットで使われることが多いです。
とはいえ、MySQLが用意している外部接続のための仕様は各種の言語に対応しています。ODBCのコネクターを始めC、C++、PHP、Perl、Python、Rubyなど言語別でもAPIがそろっています。

ここではコネクターおよびAPIを通してプログラムからMySQLを使う方法を、インストール方法から実際のSQL文発行まで、わかりやすく解説します。

プログラムから使う方法各種

MySQLに外部からアクセスする方法はいくつかありますが、APIを利用する方法もそのひとつです。APIとは「アプリケーション・プログラミング・インタフェース」の略称であり、ソフトウェアを複数のユーザーが共有して活用できるインタフェースの仕様です。

アプリケーションサービスを構築する際、メインのプログラムはMySQL以外の言語を使う場合が多いのですが、それは作業や運用の利便性、チームワークへの親和性、またはセキュリティ面での堅牢性を期待できることなどからきます。

しかし、データベース言語であるMySQLを他の言語であるPHPやC、Pythonなどから直接操作することはできません。そこでMySQLへのアクセスを仲介する機能が必要になってきます。APIはその中間層にあたります。

PHPには三種類のAPIが用意されており、良く使うのはPDOかmysqliでしょう。CにはC API コードが用意されており、MySQLと一緒に配布されています。Rubyでは2種類のAPIが用意されており、MySQL/Ruby API、Ruby/MySQL APIがあります。PythonではMySQL Python APIがサードパーティーとして提供されています。

MySQL Connector/Pythonのインストール

各種の言語に合わせてMySQLにはAPIが用意されていますが、ここではPythonを例にあげて進めます。Pythonは近年注目のプログラム言語ですが、Googleが積極的に活用していますし、AI(人工知能)の開発にも使われています。

使うOSがLinuxでもWindows、MacでもPythonのライブラリをインストールするにはpipを利用します。なお、Python自体のインストールに関する説明は割愛しますが、興味のある方は別途調べてみてください。

PythonのためのMySQL用パッケージには「mysql-connector-python」が必要です。このコネクターはpipから取得することができます。

pip install mysql-connector-python

上記コマンドを実行するとインストールが開始されます。インストールが終わったらpip listでインストール済のパッケージを確認してください。mysql-connector-pythonがあればインストールは成功しています。
なお、Windowsでは別途にソースをダウンロードし、解凍してからインストールする方法もあります。

MySQL Connector/Pythonを使ってSQLを実行する

mysql-connector-pythonのインストールが完了したら、実際に動作を確認してみましょう。PythonからMySQLに接続するには以下のようなコードで実行してください。

import mysql.connector
conn = mysql.connector.connect(
    host='ホスト',
    port='ポート番号',
    user='ユーザー名',
    password='パスワード',
    database='データベース名'
)

接続が出来ているか確認する際は以下のコマンドを実行してください。

conn.is_connected()

問題なく接続ができていれば、次にSQLを実行してみましょう。
例えばセレクト文を発行する場合は以下のようになります。

cur = conn.cursor()
cur.execute('SELECT * FROM テーブル')

セレクト文で実行された結果は以下のコードで配列として取得できます。

cur.fetchall()

更新系の実行にはコミット・ロールバックが使えます。

cur.execute('INSERT INTO テーブル (カラム) VALUES (値)')
conn.commit()

失敗した際はconn.rollback()を実行するようにtry文で処理してください。

conn.close

また、接続をクローズする際は上記のようにします。

まとめ

MySQLへのアクセスは各種の言語でAPIが用意されています。主要な言語では、公式に発行されているコネクターがありますので、比較的その扱いのための学習や技術習得には苦労しないはずです。コネクションの確立さえできれば、後は慣れたプログラム言語での操作になります。SQL文の習得さえ問題なければ、データベースを活用したサービスの開発もスムーズに進むのではないでしょうか。

CONTACT

製品・サービスに関するご質問、お見積もり、お問い合わせなど、お気軽にご連絡ください。

 050-5505-5509

受付時間 9:30 - 12:00, 13:00 - 17:00
(土日祝および年末年始を除く)