Python
 Computer >> コンピューター >  >> プログラミング >> Python

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()

この方法であれば、値のエスケープ処理が自動的に行われるため、セキュリティ面でも安心です。

  1. 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(

  2. JDBCを使ってMySQLデータベースにファイルを保存・挿入する方法

    一般的に、ファイルの内容はMySQLデータベースでは Clob 型(TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT)のカラムに保存されます。 JDBCはClob型をサポートしており、これを利用することでファイルの内容をデータベースのテーブルに格納できます。 PreparedStatement インターフェースが提供する setCharacterStream() メソッドは、パラメータのインデックス(位置)を表す整数と、Readerオブジェクトを引数として受け取ります。 このメソッドを使うと、指定したインデックスのプレースホルダ(?)に対して、Readerオブジェクト(ファイ