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

Pythonでデータベースにレコードを挿入する方法(INSERT操作の基本)

データベースのテーブルに新しいレコード(行)を作成したい場合には、SQLのINSERT文を実行する必要があります。ここでは、PythonからMySQLデータベースに対してINSERT操作を行う基本的な方法を解説します。

基本的なINSERT文の実行例

次の例では、SQLのINSERT文を実行して、EMPLOYEEテーブルに1件のレコードを作成しています。

#!/usr/bin/python
import MySQLdb
# データベース接続を開く
db = MySQLdb.connect("localhost","testuser","test123","TESTDB" )
# cursor()メソッドでカーソルオブジェクトを準備する
cursor = db.cursor()
# レコードを挿入するためのSQLクエリを準備する
sql = """INSERT INTO EMPLOYEE(FIRST_NAME,
   LAST_NAME, AGE, SEX, INCOME)
   VALUES ('Mac', 'Mohan', 20, 'M', 2000)"""
try:
    # SQLコマンドを実行する
    cursor.execute(sql)
    # 変更をデータベースにコミットする
    db.commit()
except:
    # エラーが発生した場合はロールバックする
    db.rollback()
# サーバーとの接続を閉じる
db.close()

この一連の流れは、「接続 → カーソル作成 → SQL実行 → コミット → 接続解除」というのが基本パターンです。エラーが発生した場合に備えて、try〜exceptブロック内でrollback()を呼び出し、データベースの整合性を保っている点にも注目してください。

SQLクエリを動的に生成する書き方

上記の例は、値を直接埋め込む代わりに、フォーマット演算子(%)を使ってSQLクエリを動的に組み立てる形でも書けます。

#!/usr/bin/python
import MySQLdb
# データベース接続を開く
db = MySQLdb.connect("localhost","testuser","test123","TESTDB" )
# cursor()メソッドでカーソルオブジェクトを準備する
cursor = db.cursor()
# フォーマット演算子でSQLクエリを動的に生成する
sql = "INSERT INTO EMPLOYEE(FIRST_NAME, \
   LAST_NAME, AGE, SEX, INCOME) \
   VALUES ('%s', '%s', '%d', '%c', '%d' )" % \
   ('Mac', 'Mohan', 20, 'M', 2000)
try:
    # SQLコマンドを実行する
    cursor.execute(sql)
    # 変更をデータベースにコミットする
    db.commit()
except:
    # エラーが発生した場合はロールバックする
    db.rollback()
# サーバーとの接続を閉じる
db.close()

パラメータを直接渡す実行形式

次のコード断片は、パラメータを直接渡すもう一つの実行形式の例です。ユーザーIDやパスワードなどの変数を、そのままクエリに埋め込んで実行しています。

..................................
user_id = "test123"
password = "password"
con.execute('insert into Login values("%s", "%s")' % \
    (user_id, password))
..................................

補足:より安全なパラメータ渡しについて

文字列のフォーマットによるSQLの組み立ては手軽ですが、外部からの入力値を扱う場合にはSQLインジェクションの危険があります。実際の開発では、カーソルのプレースホルダ機能を使ったパラメータ化クエリ(例:cursor.execute(sql, params))を採用するのが安全です。

また、ここで使用しているMySQLdbモジュールはPython 3では公式にサポートされていないレガシーなライブラリです。現在の環境では、mysql-connector-pythonPyMySQLなどが一般的な代替手段として利用されています。ただし、接続やカーソルの使い方といった基本的な流れは共通しているため、INSERT操作の考え方はそのまま応用できます。

  1. MSSQL Serverでデータベースを監視する方法とは?基本と確認手順を解説

    データベース監視とは データベースの監視(Monitoring)とは、データベースの現在の状態を確認し、所有者名、ファイル名、ファイルサイズ、バックアップスケジュールなどの設定状況を把握することを指します。これらの情報を定期的にチェックすることで、障害の早期発見や適切な運用管理につなげることができます。 SQL Serverで監視を行う主な方法 SQL Serverにおけるデータベースの監視は、主に以下の2つの方法で行うのが一般的です。 SQL Server Management Studio(SSMS):GUIベースの管理ツールで、視覚的にデータベースの状態を確認できます。 T-SQL(

  2. PythonのタプルをPostgreSQLデータベースに挿入する方法

    PostgreSQLはデフォルトでポート番号5432を使用して動作します。PythonからPostgreSQLを操作するには、psycopg2モジュールをインストールします。この記事では、「test」データベースと、fname(名)、sname(姓)、age(年齢)、gender(性別)、salary(給与)というフィールドを持つ「employee」テーブルが既に用意されているものとして解説を進めます。 1. データベースへの接続とカーソルオブジェクトの取得 まず、Pythonスクリプト内で以下のコードを実行し、データベースへの接続を確立してカーソルオブジェクトを取得します。 import