PythonからPostgreSQLを操作する方法
PythonからPostgreSQLを操作するためには、まず psycopg2
ライブラリをインストールする必要があります。次に、以下の手順に従って操作を行うことができます。
1.ライブラリをインポートする
import psycopg2
2.PostgreSQLに接続する
conn = psycopg2.connect(
host="localhost",
database="mydatabase",
user="myusername",
password="mypassword"
)
上記の例では、ローカルのホストにある mydatabase
という名前のデータベースに myusername
というユーザー名と mypassword
というパスワードで接続しています。
3.カーソルを作成する
cur = conn.cursor()
4.SQLクエリを実行する
cur.execute("SELECT * FROM mytable")
上記の例では、mytable
テーブルからすべての列を取得しています。
5.結果を取得する
rows = cur.fetchall()
上記の例では、cur.fetchall()
を使用して、実行したクエリからすべての結果を取得しています。
6.変更をコミットする
conn.commit()
7.接続を閉じる
cur.close()
conn.close()
上記の例では、カーソルと接続を閉じています。
その他の例をご紹介
*PythonからPostgreSQLへ接続もできますし、MySQLやGCPのBigQueryにも接続できます。他にも、色々なデータベースを操作できます。
SELECT 特定のカラム、集計関数(集計対象カラム)
FROM テーブル名
WHERE 条件式
GROUP BY 特定のカラム
HAVING 集計関数(集計対象カラム)で条件式
ORDER BY ソート条件
#売上金額が1000円以上の商品名のみ抽出
SELECT
商品名
, sum(売上金額)
FROM 売上実績
GROUP BY 商品名
HAVING sum(売上金額) >= 1000
*HAVINGはGROUP BYとORDER BYの間に表記
HAVINGとWHEREの違い
*データに対して抽出を行う
#実行の順番(順番を誤って表記するとエラー)
#「どのテーブルの、どのデータを、どうグルーピングし、
グルーピングしたデータをどう抽出し、どのカラムを表示するか」の流れ
FROM
WHERE
GROUP BY
HAVING
SELECT
ORDER BY
*WHEREはGROUP BYされる前のデータに抽出条件を付けくわえる
*HAVINGはGROUP BYされた後のデータに抽出条件を 付けくわえる
WHEREとHAVINGを同時に使う
#「Tシャツ以外の売上金額の合計を集計し、売上金額が1000円以下のみのデータ」を出力
#WHEREの!=は否定:ジャケット以外のデータを抽出
SELECT
商品名
, sum(売上金額)
FROM
実績管理表
WHERE
商品名 !='Tシャツ'
GROUP BY
商品名
HAVING
sum(売上金額) <= 1000
コメント