Pythonでデータベーステーブルを作成する方法【MySQLdbの実例付き】
データベースへの接続が確立されたら、次はテーブルの作成やレコードの登録を行う準備が整います。これらの操作には、作成したカーソルオブジェクトの execute() メソッドを使用します。
データベーステーブルを作成する手順
以下の手順で、PythonからMySQLデータベースにテーブルを作成できます。
- MySQLdbモジュールをインポートし、データベースに接続する
cursor()メソッドでカーソルオブジェクトを準備するexecute()メソッドにSQL文を渡して実行する- 処理完了後、接続を閉じる
サンプルコード:EMPLOYEEテーブルの作成
ここでは、従業員情報を管理する「EMPLOYEE」というテーブルを作成してみましょう。
#!/usr/bin/python
import MySQLdb
# データベース接続を開く
db = MySQLdb.connect("localhost","testuser","test123","TESTDB" )
# cursor()メソッドでカーソルオブジェクトを準備
cursor = db.cursor()
# execute()メソッドを使い、既存の同名テーブルがあれば削除
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
# 要件に合わせてテーブルを作成
sql = """CREATE TABLE EMPLOYEE (
FIRST_NAME CHAR(20) NOT NULL,
LAST_NAME CHAR(20),
AGE INT,
SEX CHAR(1),
INCOME FLOAT )"""
cursor.execute(sql)
# サーバーから切断
db.close()コードの解説
1. データベースへの接続
MySQLdb.connect() の引数には、ホスト名(localhost)、ユーザー名(testuser)、パスワード(test123)、データベース名(TESTDB)を指定します。
2. 既存テーブルの削除
DROP TABLE IF EXISTS EMPLOYEE を実行することで、同名のテーブルがすでに存在していた場合にエラーを防ぎ、安全に再作成できるようにしています。
3. テーブル構造の定義
EMPLOYEEテーブルは以下の5つのカラムで構成されています。
- FIRST_NAME:名(最大20文字・NULL不可)
- LAST_NAME:姓(最大20文字)
- AGE:年齢(整数型)
- SEX:性別(1文字)
- INCOME:収入(浮動小数点型)
4. 接続の切断
すべての処理が完了したら、db.close() を呼び出してサーバーとの接続を明示的に閉じることが推奨されます。これによりリソースの無駄な消費を防げます。
注意点
- MySQLdbはPython 2系向けのライブラリです。Python 3系では
mysqlclientやPyMySQLの利用を検討してください。 - 本番環境では、パスワードなどの認証情報をソースコードに直接記述せず、環境変数や設定ファイルで管理しましょう。
- SQLインジェクション対策として、ユーザー入力を含むSQLを実行する場合はプレースホルダを使用してください。
-
Python Tkinterでフレームレス(枠なし)ウィンドウを作成する方法
Tkinterは、PythonでGUIアプリケーションを開発する際に最も広く使われている標準ライブラリです。ボタンやラベルなどのウィジェット追加をはじめ、GUI構築に必要なさまざまな機能が標準で備わっています。 ここでは、Tkinterを使ってタイトルバーや境界線のない「フレームレス(ボーダーレス)ウィンドウ」を作成する方法を解説します。フレームレスウィンドウを実現するには、overrideredirectメソッドを使用します。このメソッドを有効にすると、OSのウィンドウマネージャーによる装飾が無効化され、閉じるボタン、タイトルバー、最小化ボタンといったウィンドウ要素がすべて取り除かれます。
-
Python tkinterでボタンを作成する方法|標準tkinterとttkの違いも解説
PythonのGUIライブラリ「Tkinter」には、ウィンドウ上にボタンを作成するためのさまざまな方法が用意されています。この記事では、標準のtkinterモジュールを使ったボタンの作成方法と、テーマ機能を持つtkinter.ttkモジュールを使ったボタンの作成方法の2通りを、サンプルコードとともにわかりやすく解説します。 tkinterモジュールでボタンを作成する 以下のプログラムでは、まずウィンドウを作成し、続いてButtonクラスを使ってボタンを生成しています。tkinterモジュール全体をインポートしているため、作成されたボタンには従来型のスタイル(テーマ)が適用されます。 主なパラ