【Python】PostgreSQLをインストールして動かしてみる

はじめに

PostgreSQLをWIndowsにインストールして、Pythonで動かしてみようと思います。



開発環境

  • Windows 10
  • Python 3.10.5



PostgreSQLをインストール

Download PostgreSQLのサイトを開きます。Windows x86-64を選択します。現時点では最新版が14.5のようなので、これをダウンロードします。そしてダブルクリック。

Nextをクリック。

変更せず、そのままクリック。

そのままNextをクリック。

Nextをクリック。

パスワードを入力してクリック。

Portは変更せず、そのままクリック。

ここでLocateを、Japanese, Japanに設定しNextをクリック。

Nextをクリック。

Nextをクリック。

インストールが始まります。

Finishをクリックして完了。



pgAdmin4の設定

pgAdmin4は、先程一緒にインストールされたプログラムです。これはPostgreSQLのデータベース操作をGUIでできるツールです。

起動します。

パスワードを聞かれるので、pgAdmin4のパスワードを設定し、OKをクリック。

ServersをクリックするとPostgreSQLのパスワードを聞かれるので、先程設定したパスワードを入力しOKをクリック。

Databasesを右クリックし、Databaseを選択。

ここではDatabaseの名前をdb001とします。もちろん任意の名前でいいです。

Tableの設定をします。

ここでは名前をtbl01とします。Tablespaceはディフォルトのpg_defaultを選択します。

次にColumnsを選択し、右上の+をクリックしてName及びData typeを以下のように設定してSaveをクリック。

NameData type
serial_numserial
nametext
Columnsの設定


これで一応設定が完了します。



PythonでPostgreSQLにアクセスする

PythonでPostgreSQLに接続し、データベースのテーブルにデータの挿入、消去などを行ってみます。

import psycopg2

dsn = "dbname=db001 host=localhost user=postgres password=Password"

conn = psycopg2.connect(dsn)
cur = conn.cursor()

cur.execute("select version()")
print(cur.fetchone())

cur.execute("insert into tbl01 (name) values ('オレンジ')")
conn.commit()

cur.execute("insert into tbl01 (name) values ('レモン')")
conn.commit()

cur.execute("select * from tbl01")
print(cur.fetchall())

cur.execute("delete from tbl01")
conn.commit()

cur.execute("select * from tbl01")
print(cur.fetchall())

cur.execute("insert into tbl01 (name) values ('ニンジン')")
conn.commit()

cur.execute("insert into tbl01 (name) values ('タマネギ')")
conn.commit()

cur.execute("select * from tbl01")
print(cur.fetchall())

cur.execute("delete from tbl01")
conn.commit()

cur.execute("select * from tbl01")
print(cur.fetchall())

cur.execute("select setval ('tbl01_serial_num_seq', 1, false)")
conn.commit()

cur.execute("insert into tbl01 (name) values ('ブタニク')")
conn.commit()

cur.execute("insert into tbl01 (name) values ('トリニク')")
conn.commit()

cur.execute("select * from tbl01")
print(cur.fetchall())

cur.execute("delete from tbl01")
conn.commit()

cur.execute("select * from tbl01")
print(cur.fetchall())

cur.execute("select setval ('tbl01_serial_num_seq', 1, false)")
conn.commit()

# Closed
cur.close()
conn.close()

簡単にプログラムの説明をします。

dsn = "dbname=データベース名 host=localhost user=postgres password=パスワード"

データベース名とパスワードは上で設定したものを入れます。

cur.execute("select setval ('tbl01_serial_num_seq', 1, false)")
conn.commit()

このコマンドがないと、データを消去してもserilal_numの値が初期化されず更新されます。このコマンドを実行することにより値が1に設定されます。

「tbl01_serial_num_seq」は、「テーブル名 + _カラム名 + _seq」という規則で構成されます。

プログラムを実行すると以下のメッセージが表示されると思います。

('PostgreSQL 14.5, compiled by Visual C++ build 1914, 64-bit',)
[(1, 'オレンジ'), (2, 'レモン')]
[]
[(3, 'ニンジン'), (4, 'タマネギ')]
[]
[(1, 'ブタニク'), (2, 'トリニク')]
[]





© 2024 サニーサイド