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

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

PostgreSQLはデフォルトでポート番号5432を使用して動作します。PythonからPostgreSQLを操作するには、psycopg2モジュールをインストールします。この記事では、「test」データベースと、fname(名)、sname(姓)、age(年齢)、gender(性別)、salary(給与)というフィールドを持つ「employee」テーブルが既に用意されているものとして解説を進めます。

1. データベースへの接続とカーソルオブジェクトの取得

まず、Pythonスクリプト内で以下のコードを実行し、データベースへの接続を確立してカーソルオブジェクトを取得します。

import psycopg2
conn = psycopg2.connect(database="test", user="postgres", password="pass123", host="localhost", port="5432")
cur = conn.cursor()

2. 挿入するデータをタプルとして準備する

employeeテーブルに挿入したいデータは、タプルオブジェクトとして保持しておきます。

t1 = ('Mac', 'Mohan', 20, 'M', 2000)

3. INSERTクエリを作成する

次に、このタプルを使ってINSERT文となるSQLクエリを組み立てます。

sql = "insert into employee values(%s,%s,%d,%s,%d)" % t1

4. クエリを実行する

組み立てたクエリを、カーソルオブジェクトを使って実行します。

cur.execute(sql)
conn.commit()

このコードを実行すると、employeeテーブルに新しいレコードが追加されます。conn.commit()を呼び出して変更を確定することを忘れないようにしましょう。コミットしない場合、変更はデータベースに反映されません。

より安全な方法:パラメータ化クエリの活用

上記のような文字列フォーマットによるSQL構築は、SQLインジェクションのリスクがあるため、実際の開発では推奨されません。代わりに、プレースホルダを使ったパラメータ化クエリを利用するのが安全です。

sql = "insert into employee values(%s,%s,%s,%s,%s)"
cur.execute(sql, t1)
conn.commit()

この方法では、psycopg2が自動的に値を適切にエスケープしてくれるため、セキュリティ面でも安心です。

  1. PythonでMySQLデータベースへの挿入後にIDを取得する方法

    はじめに PythonからMySQLデータベースへレコードを挿入する際、「今挿入したばかりのレコードのID(AUTO_INCREMENTで自動採番された値)をすぐに取得したい」というケースは非常によくあります。本記事では、pymysqlライブラリを使ってMySQLにデータを挿入し、その直後にIDを取得する具体的な手順を解説します。 前提条件 作業を始める前に、以下の環境が整っていることを確認してください。 MySQL 8.0.12 がインストールされていること Python 3.6.3(32ビット) がインストールされていること pipコマンドで pymysql がインストールされているこ

  2. Pythonでタプルの中にタプルを入れる方法(ネストされたタプルの使い方)

    Pythonにおけるタプルは、丸括弧 () で囲まれた、順序を持つオブジェクトのコレクションとして定義されます。タプルの要素には任意のPythonオブジェクトを格納できるため、タプル自体を別のタプルの要素として含めることも可能です。これを「ネストされたタプル」と呼びます。タプルの中にタプルを定義する以下の例では、タプル t1 の中に、別のタプル (4, 5, 6) を要素として含めています。>>> t1 = (1, (4, 5, 6), 2, 3) >>> t1 (1, (4, 5, 6), 2, 3)インデックスで内側のタプルを取り出すこの例では、t1 の