PythonのタプルをMySQLデータベースに挿入する方法を徹底解説
サーバー上に「test」という名前のMySQLデータベースが存在し、その中に「employee」というテーブルが作成済みであると仮定します。このテーブルには、fname(名)、lname(姓)、age(年齢)、gender(性別)、salary(給与)の5つのフィールドが含まれています。
1. レコードデータをタプルで定義する
まず、1件分のレコードデータを格納したタプルオブジェクトを次のように定義します。
t1 = ('Mac', 'Mohan', 20, 'M', 2000)
2. PyMySQLのインストールとデータベースへの接続
MySQLとPython 3の間にインターフェースを確立するには、PyMySQLモジュールが必要です。まだインストールしていない場合は、pipコマンドでインストールしておきましょう。
pip install pymysql
インストール後、以下のコードでデータベース接続を確立し、cursor()メソッドを使ってカーソルオブジェクトを取得します。
import pymysql
# データベース接続を開く
db = pymysql.connect("localhost", "root", "", "test")
# cursor()メソッドでカーソルオブジェクトを準備
cursor = db.cursor()
3. INSERTクエリを作成する
次のステップでは、タプル内のデータを使ってINSERTクエリを組み立てます。
sql = "INSERT INTO employee VALUES (%s, %s, %d, %s, %d)" % t1
4. クエリを実行する
組み立てたクエリは、カーソルオブジェクトのexecute()メソッドで実行します。変更をデータベースに確定させるため、commit()の呼び出しも忘れないようにしましょう。
cursor.execute(sql) db.commit()
この時点でemployeeテーブルの内容を確認すると、新しいレコードが追加されていることがわかります。
より安全な方法:プレースホルダを使ったパラメータ化クエリ
文字列フォーマットで直接SQLを組み立てる方法は、SQLインジェクションのリスクがあるため、実運用環境では推奨されません。代わりに、execute()メソッドの第2引数にタプルを渡すパラメータ化クエリを使用すると、安全かつ簡潔にデータを挿入できます。
sql = "INSERT INTO employee VALUES (%s, %s, %s, %s, %s)" cursor.execute(sql, t1) db.commit()
この方法であれば、値のエスケープ処理が自動的に行われるため、セキュリティ面でも安心です。
-
MySQL Workbenchを使ったMySQLデータベースのバックアップ方法を徹底解説
MySQL Workbenchでデータベースをバックアップする手順MySQLデータベースのバックアップを作成するには、まずMySQL Workbenchをインストールする必要があります。以下の公式リンクから、お使いの環境に合ったインストーラーをダウンロードしてインストールしてください。https://dev.mysql.com/downloads/windows/installer/8.0.html1. MySQL Workbenchを起動し「Data Export」を選択インストールが正常に完了したら、MySQL Workbenchを開きます。画面上部のメニューから「Data Export(
-
JDBCを使ってMySQLデータベースにファイルを保存・挿入する方法
一般的に、ファイルの内容はMySQLデータベースでは Clob 型(TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT)のカラムに保存されます。 JDBCはClob型をサポートしており、これを利用することでファイルの内容をデータベースのテーブルに格納できます。 PreparedStatement インターフェースが提供する setCharacterStream() メソッドは、パラメータのインデックス(位置)を表す整数と、Readerオブジェクトを引数として受け取ります。 このメソッドを使うと、指定したインデックスのプレースホルダ(?)に対して、Readerオブジェクト(ファイ