Python3でpostgresqlを使う

PostgreSQLの準備

インストール

# yum install postgresql-server
# postgresql-setup initdb

設定

/var/lib/pgsql/data/pg_hba.conf

host    all             all             127.0.0.1/32            md5

起動

# systemctl start postgresql
# systemctl enable postgresql

ユーザ作成

# su - postgres
$ psql
CREATE ROLE dbuser WITH LOGIN PASSWORD 'password';

データベース作成

CREATE DATABASE dbname OWNER dbuser ENCODING 'utf8';

Python用モジュールをインストール

pip install psycopg2

CREATE文

conn = psycopg2.connect("host=127.0.0.1 port=5432 dbname=dbname user=dbuser password=password")
dict_cur = conn.cursor()
dict_cur.execute("CREATE TABLE table (id serial PRIMARY KEY, name varchar(23), password varchar(255))")
conn.commit()
dict_cur.close()
conn.close()

SELECT文

conn = psycopg2.connect("host=127.0.0.1 port=5432 dbname=dbname user=user password=password")
dict_cur = conn.cursor(cursor_factory=psycopg2.extras.DictCursor)
dict_cur.execute("select name from table where (name)=(%s)", (name,))
for row in dict_cur:
if row['name'] == name:
flag = True
break
dict_cur.close()
conn.close()

INSERT文

conn = psycopg2.connect("host=127.0.0.1 port=5432 dbname=dbname user=user password=password")
dict_cur = conn.cursor(cursor_factory=psycopg2.extras.DictCursor)
dict_cur.execute("insert into table (name, password) values (%s, %s)", (name, password))
conn.commit()
dict_cur.close()
conn.close()