トッカンソフトウェア

Python PostgreSQLに接続(Windows)

PythonでPostgreSQLに接続してます。PostgreSQLの導入はこちらをご参照下さい。


ドライバ入手

ドライバはいくつかありますが、今回はpsycopg2を使用します。
インストールはcondaを使用する場合、以下のコマンドで出来ます。
				
conda install psycopg2

			
実行イメージ

pipを使用する場合、以下のコマンドで出来ます。
				
pip install psycopg2

			
実行イメージ

接続と簡単な動作確認

				
"""
PostgreSQL接続テストプログラム
"""

# psycopg2をインポートします
import psycopg2

# DBに接続します
conn = psycopg2.connect(
    "host=localhost port=5432 dbname=postgres user=postgres password=ps")

# カーソルを取得します
cur = conn.cursor()

# SQLを実行します
cur.execute("SELECT * FROM m_user;")

# 結果を1行だけ取得し表示
print(cur.fetchone())

# カーソルを閉じる
cur.close()

# コネクションを閉じる
conn.close()


			
実行結果


INSERT、UPDATE、DELETE、SELECT

カーソルにexecuteでSQLを実行します。executemanyで実行すると配列で渡したデータすべてに対してSQLを実行します。
				
"""
PostgreSQL接続テストプログラム
"""
# psycopg2をインポートします
import psycopg2

# DBに接続します
conn = psycopg2.connect(
    "host=localhost port=5432 dbname=postgres user=postgres password=ps")

# カーソルを取得します
cur = conn.cursor()

id1 = "ID1"
name1 = "NAME1"

# 1行、INSERT
cur.execute("INSERT INTO m_user(ID, NAME) VALUES(%s, %s);", (id1, name1))

ary = [{"i": "ID2", "n": "NAME2"}, {"i": "ID3", "n": "NAME3"}]

# 複数行、INSERT
cur.executemany("INSERT INTO m_user(ID, NAME) VALUES(%(i)s, %(n)s);", ary)

name1 += "x"

# 1行、UPDATE
cur.execute("UPDATE m_user SET NAME = %s WHERE ID = %s;", (name1, id1))

ary[0]["n"] += "x"

# 複数行、UPDATE
cur.executemany("UPDATE m_user SET NAME = %(n)s WHERE ID = %(i)s;", ary)

where1 = "D3"

# DELETE
cur.execute("DELETE FROM m_user WHERE ID LIKE '%" + where1 + "';")

where2 = "ID"

# SELECT
cur.execute("SELECT id, name FROM m_user WHERE ID LIKE %s;", (where2 + "%",))

# 全行を取得
rows = cur.fetchall()

for row in rows:
    print(row[0] + "-" + row[1])

# カーソルを閉じる
cur.close()

# コネクションを閉じる
conn.close()


			


ページのトップへ戻る