こんにちは、こちょすです!
今回はpythonを使ってPostgreSQLを操作できるようになるまでの手順をご説明していこうと思います!
タイトルにもあるとおり、超初心者向けの手順になっているので、基礎的な内容しか触れませんがご容赦ください!
インスタはこちら!日々のトレーニング動画や食事の記録を載せています!ぜひフォロー・応援お願いします!
こんな方におすすめ
- PostgreSQLの導入方法が知りたい
- まずはPostgreSQLを触ってみたい
- pythonでPostgreSQLを使えるようになりたい
目次
PostgreSQLのデータベースを作成する
最終的なゴールはPostgreSQLをPythonで操作することですが、まずはPostgreSQLのデータベースを構築して、直接ターミナルから操作できるようになりましょう!
pythonの仮想環境を作成する
まずは今回用の仮想環境を作ります。これは必須では無いので、読み飛ばしてもOKです。
$ python -m venv test_postgresql $ source test_postgresql/bin/activate
注意ポイント
$はターミナルを表しているだけなので、それ以外の文字列を打ち込んでくださいね!
postgreSQLのインストール
まずはhomebrewを使って、postgreSQLをインストールします。
ターミナルから以下のコマンドを実行します。
$ brew install postgresql
データベースの作成
データベースの作成は以下のコマンドで実行します。
「mydb」の部分はお好きな名前にしてください。
$ createdb mydb
注意ポイント
上記コマンドを実行して以下のようなエラーが出た場合、「brew services restart postgresql」というコマンドを実施してみてください!
createdb: error: could not connect to database template1: could not connect to server: No such file or directory ・・・
PostgreSQLのデータベースにアクセスする
PostgreSQLのデータベースにアクセスする
では上記で作成したmydbにアクセスしてみます。
$ psql mydb
以下のようにターミナルが表示されれば成功です。
psql (13.4) Type "help" for help. mydb=#
いくつかselect文を発行してみましょう!
mydb=# select version() mydb-# ; version ------------------------------------------------------------------------------------------------------------------ PostgreSQL 13.4 on x86_64-apple-darwin20.4.0, compiled by Apple clang version 12.0.5 (clang-1205.0.22.9), 64-bit (1 row) mydb=# select current_date; current_date -------------- 2021-09-05 (1 row) mydb=# select 2 + 2 mydb=# ; ?column? ---------- 4 (1 row)
PostgreSQLのデータベースへの接続を終了する
psqlを終了するには、 以下を入力します。(スラッシュではなくバックスラッシュなので注意です!)
mydb=# \q
新しいテーブルの作成
今回はサンプルとして天気を管理するテーブルと、都市を管理するテーブルを作ってみます。
テーブルの作成はcreate文を使います。
create文の発行
以下のコマンドを、postreSQLに接続して実行しましょう。
実行後に「CREATE TABLE」と出力されれば成功です。
CREATE TABLE weather ( city varchar(80), temp_lo int, -- 最低気温 temp_hi int, -- 最高気温 prcp real, -- 降水量 date date ); CREATE TABLE cities ( name varchar(80), location point );
テーブルに行を挿入
上記で作成した天気テーブルと都市テーブルに対してレコードを登録します。
レコードの登録はinsert文を使います。
insert文の発行
以下のコマンドを、postreSQLに接続して実行しましょう。
INSERT INTO weather VALUES ('San Francisco', 46, 50, 0.25, '1994-11-27'); INSERT INTO cities VALUES ('San Francisco', '(-194.0, 53.0)');
以下のようにカラムを指定して登録することも可能です(こちらのほうが明示的で良いと思います)
INSERT INTO weather (city, temp_lo, temp_hi, prcp, date) VALUES ('San Francisco', 43, 57, 0.0, '1994-11-29'); INSERT INTO weather (date, city, temp_hi, temp_lo) VALUES ('1994-11-29', 'Hayward', 54, 37);
ちなみに、PostgreSQLのデフォルトでは自動コミットとなっているので、commitは明示的に実行しなくても、commitされます。(もしそれが困る場合には、AUTOCOMMITをオフにする方法とかで調べると出てくると思いますのでぜひやってみてください!)
pythonからpostgreSQLに接続する
次は先程作成したデータベースにpythonから接続してみましょう。
ドライバのインストールをする
pythonからpostgreSQLを操作するためにはドライバーのインストールが必要なので、pipでインストールしましょう
$ pip install psycopg2
接続用のpythonファイルを作成
test.pyとして、以下のようなコードを書きましょう。
ちなみにconnectの引数として、「 " user=" + "ユーザー"」 と「" password=" + "パスワード"」も設定可能です。
指定しない場合にはデフォルトユーザの「postgres」として接続します。
import psycopg2 def connect(): con = psycopg2.connect("host=" + "localhost" + " port=" + "5432" + " dbname=" + "mydb" ) return con def select_execute(con, sql): with con.cursor() as cur: cur.execute(sql) rows = cur.fetchall() return rows if __name__ == '__main__': con = connect() sql = 'select * from weather' res = select_execute(con, sql) for r in res: for index, i in enumerate(r): print(r[index])
これを実行すると、以下のように出力されればうまく接続できています!
San Francisco 46 50 0.25 1994-11-27 San Francisco 43 57 0.0 1994-11-29 Hayward 37 54 None 1994-11-29
以上でpythonを使って、PostgreSQLを操作する方法でした!
この記事でぜひデータベース操作の基礎を学んでいただければ幸いです。
さらに勉強したい方は、SQLAlchemyと言われるORMツールを使って操作する方法などを学ぶと良いかなと思います!
ではまた!!