【PostgreSQL】PythonでDBにデータをINSERTする
はじめに
VScode上でPythonを書きPostgreSQLを操作するまでを、備忘録として残しておきます。
目次
1.psycopg2,PostgreSQLのインストール
2.DB,テーブルの作成
3.レコードを挿入する(INSERT)
1.psycopg2,PostgreSQLのインストール
PostgreSQL(ポストグレスキューエル、略称: Postgres)は、オープンソースのRDBMSです。PostgreSQLへは、Pythonからもアクセスでき、Pythonではpsycopg2というパッケージを利用し、PostgreSQLへ接続します。
psycopg2のインストール
pip install psycopg2
インストールに失敗する場合
以下のバイナリを利用する方法を試してください。
(*バイナリとは、0と1の二進数で表現される形式で処理速度が速い)
pip install psycopg2-binary
PostgreSQLのインストール(Windows)
PostgreSQLの公式サイト(https://www.postgresql.org/)からダウンロードしてください。
これで準備は完了です。
2.DB,テーブルの作成
PostgreSQLサーバへの接続
SQL Shell (psql) を起動して、PostgreSQLサーバに接続します。
SQL Shell (psql) の起動は、ターミナルに以下を打ち込んでください。
sudo -u postgres psql
これでPostgreSQLサーバに接続できています。
パスを通している場合、コマンドプロンプトを開きPostgreSQLに接続します。
コマンドプロンプトで接続するには以下のように入力します。
C:\>psql -h localhost -p 5432 -U postgres
または
C:\>psql -U postgres
「ユーザ postgres のパスワード: 」と表示されるので、インストール時に設定したパスワードを入力します。
これでPostgreSQLサーバに接続できています。
DBの作成
DBを作成します。
psql上で、create database データベース名; と入力すると、CREATE DATABASEと表示されます。
postgres=# create database testdb;
CREATE DATABASE
\l と入力するとデータベース一覧を表示できるので、testdbが作成されていることを確認できます。)
(psqlでは末尾に;(セミコロン)をつけることで、処理を実行してくれます。)
テーブルの作成
次に、先程作成したdbにテーブルを作成します。
先程のtestdbに接続するため、\c testdb; と入力します。
postgres=# ¥c testdb
You are now connected to database "testdb" as user "postgres".
以下のクエリを入力して、testdbにtestテーブルを作成します。
CREATE TABLE test (
id SERIAL,
email varchar(50) NOT NULL,
password varchar(50) NOT NULL,
PRIMARY KEY (id)
) ;
CREATE TABLE とメッセージが表示されれば正常にテーブルが作成されています。
\dtで作成したテーブル一覧を表示することが出来ます。
3.レコードを挿入する(INSERT)
1レコード挿入
Pythonファイルを作成します。
ここにレコードを挿入するコードを書きます。
import psycopg2
# データベースに接続
connection = psycopg2.connect(host='localhost',
user='postgres',
password='PostgreSQLのパスワード',
database='testdb')
with connection:
with connection.cursor() as cursor:
# レコードを挿入
sql = "INSERT INTO testdb (email, password) VALUES (%s, %s)"
cursor.execute(sql, ('testdb@python.mail', 'password'))
# コミットしてトランザクション実行
connection.commit()
結果の確認は、PostgreSQLでselectクエリを実行します。
testdb=# select * from test;
id | email | password
----+----------------------+-------------
1 | testdb@python.mail | password
レコードが挿入されていることが確認できました。
csvファイルからレコード挿入
次にcsvファイルから一括でレコードを挿入する方法を記述します。
import psycopg2
import csv
# データベースに接続
connection = psycopg2.connect(host='localhost',
user='postgres',
password='PostgreSQLのパスワード',
database='testdb')
# CSVファイルからデータを読み取り、データベースに挿入する
with connection:
with connection.cursor() as cursor:
with open('読み込みたいcsvファイルのパス', 'r', encoding='utf-8') as file:
reader = csv.DictReader(file, fieldnames=['email', 'password'])
with connection.cursor() as cursor:
for row in reader:
email = row['email']
password = row['password']
cursor.execute("INSERT INTO ipmatching_test (email, password) VALUES (%s, %s, %s, %s)", (email, password))
connection.commit()
# 接続を閉じる
connection.close()
読み込みたいcsvファイルのパスを変更し、カラム名も適宜変更してください。
以上で、「PythonでDBにデータをINSERTする」は完了です。
Discussion