読者です 読者をやめる 読者になる 読者になる

PythonでPostgreSQLの利用

PostgreSQL徹底入門 第3版

NoSQLが騒がれる昨今でもリレーショナルデータベースは今だ健在です。 検索パフォーマンスやデータの管理はリレーショナルデータベースの方が楽ですね。

オープンソースのリレーショナルデータベースは、PostgreSQL*1派とMySQL*2派に別れますね。 ちなみに、私はPostgreSQL派です。

さて、PostgreSQLPythonから利用する方法を書きます。 ライブラリはpsycopg2を利用します。 インストールにはpipを利用します。

データベースとの接続

import psycopg2 as psql

connection = psql.connect('dbname=sample')

psycopg2ライブラリのconnectメソッドを利用してデータベースと接続します。 connectメソッドは入力にデータベースの情報(データベース名、ユーザ名、パスワード、など)を入力します。 データベースの権限設定次第ですが、最小の入力はデータベース名です。 なので、上記例では「dbname=sample」でsampleというデータベースに接続しています。

データベースへのアクセス

cursorオブジェクト
cursor = connection.cursor()

データベースの操作にはcursorオブジェクトを利用します。 cursorオブジェクトはconnectionオブジェクトのcursorメソッドを呼び出して取得します。

データベースの操作

データベースの操作はcursorオブジェクトのexecuteメソッドを利用します。

  • リレーションの作成
cursor.execute('create table people(id int primary key, name text, age int)')
  • リレーションの削除
cursor.execute('drop table people')
  • リレーションへタプルの挿入
cursor.execute('insert into people (id, name) values (%s, %s)', (101,. u'太郎'))
  • リレーションからタプルの削除
cursor.execute('delete from people where id = 101')
  • リレーションの更新
cursor.execute('update people set age = 21 where id = 101')

データベースの操作をしたらコミットをして操作を反映させます。

connection.commit()
データベースの検索
cursor.execute('select name, age from people where id = 101')
row = cursor.fetchone()
name = row[0]
age = row[1]

検索も操作同様にcursorオブジェクトのexecuteメソッドを利用します。 検索結果を受け取る際にfetchoneメソッドやfetchallメソッドを使います。 fetchoneは単一のタプルを返し、fetchallは結果タプルをリスト形式で返します。 各タプルは射影の順に格納されています。

データベースへの接続の解除

cursor.close()
con.close()

データベースの利用が終わったらcursorとconnectionを閉じます。