PythonでMySQLデータベースに接続する方法を徹底解説
PythonからMySQLデータベースを操作するには、まず正しい手順で接続を確立することが重要です。この記事では、MySQLdbモジュールを使ってデータベース「TESTDB」に接続する基本的な方法を、事前準備からサンプルコード、実行結果の確認まで順を追って解説します。
接続前の事前準備
MySQLデータベースに接続する前に、以下の項目が整っていることを確認してください。
- データベース「TESTDB」が作成済みであること
- TESTDB内にテーブル「EMPLOYEE」が作成済みであること
- EMPLOYEEテーブルに FIRST_NAME、LAST_NAME、AGE、SEX、INCOME の各フィールドが定義されていること
- ユーザーID「testuser」とパスワード「test123」でTESTDBへアクセスできる設定になっていること
- Pythonモジュール「MySQLdb」がマシンに正しくインストールされていること
- MySQLの基礎を理解するために、MySQLチュートリアルを一通り学習していること
これらの準備ができていないと、接続時やSQL実行時にエラーが発生する原因となります。特にユーザー権限の設定漏れはよくあるトラブルなので、あらかじめ確認しておきましょう。
MySQLへの接続サンプルコード
以下は、MySQLデータベース「TESTDB」に接続する基本的な例です。
#!/usr/bin/python
import MySQLdb
# データベース接続を開く
db = MySQLdb.connect("localhost","testuser","test123","TESTDB")
# cursor()メソッドでカーソルオブジェクトを準備
cursor = db.cursor()
# execute()メソッドでSQLクエリを実行
cursor.execute("SELECT VERSION()")
# fetchone()メソッドで1行だけ取得
data = cursor.fetchone()
print "Database version : %s " % data
# サーバーから切断
db.close()
実行結果
このスクリプトを実行すると、Linux環境では次のような出力が得られます。
Database version : 5.0.45
このように、接続先サーバーのMySQLバージョンが表示されれば、正常に接続できています。
コードの流れとポイント
このスクリプトの処理の流れを整理すると、以下のようになります。
- 接続の確立: データソースとの接続に成功すると、Connectionオブジェクトが返され、変数 db に格納されます。失敗した場合は db に None が設定されます。
- カーソルの作成: 取得したdbオブジェクトを使って cursor(カーソル)オブジェクト を生成します。SQLクエリの実行は、このカーソルを通じて行います。
- SQLの実行: execute()メソッドでSQL文を実行し、fetchone()メソッドで結果を1行取得します。
- 接続の切断: 処理が完了したら、必ずclose()メソッドでデータベース接続を閉じ、リソースを解放します。
特に最後の「接続を閉じる」処理は重要です。接続を開いたまま放置すると、サーバー側のリソースを無駄に消費し、同時接続数の上限に達して新たな接続ができなくなる可能性があります。処理の最後には必ずdb.close()を呼び出す習慣をつけましょう。
まとめ
PythonでのMySQL接続は、「connect()で接続 → cursor()でカーソル作成 → execute()でSQL実行 → close()で切断」という基本フローを押さえればシンプルです。まずはこのサンプルコードを実際に動かしながら、データベース操作の基礎を身につけていきましょう。
-
PythonでSAPデータベースをクエリする方法:PyRFCの基本と活用
PythonとSAPの連携の概要Pythonは、コーディングが容易で読みやすく理解しやすいことから、世界中で最も広く利用されているオブジェクト指向プログラミング言語のひとつです。豊富なライブラリとシンプルな文法により、業務システムとの連携にも幅広く活用されています。PyRFCモジュールのインストールPythonをSAPシステムと連携させるには、「PyRFC」と呼ばれるPython用SAP RFCモジュールをインストールする必要があります。一般的には、以下のようにpipコマンドで導入できます。pip install pyrfcPyRFCを利用することで、PythonからSAPのRFC(Remot
-
サーバーレスの課題:データベース接続問題とその解決策
サーバーレス向けデータベースを設計する上で、私たちにとって最大の課題は、リクエスト単位の課金を収益性のある形で実現できるインフラを構築することでした。Upstashはこれを達成したと考えていました。しかし製品ローンチ後、もう一つの重大な課題が浮上しました。それがデータベース接続です。 なぜサーバーレスでデータベース接続が問題になるのか ご存知の通り、サーバーレス関数は0から無限大までスケールします。トラフィックが急増すると、クラウドプロバイダーは新しいコンテナ(Lambda関数)を並行して作成し、バックエンドをスケールアウトします。関数内で新しいデータベース接続を確立すると、あっという間にデー