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()
ページのトップへ戻る