エラーが出ては足りないものをインストールした結果、
以下が必要であった。
pythonでcgiが動くことはすでに確認済み。
dnf install postgresql-devel dnf install gcc dnf install python3-devel pip install psycopg2
OSはCentOS8、pythonは3.6.8である。
以下がpostgresqlのDBに登録されている内容を表示するcgiの例である。
ローカル(cgiを実行しているサーバ)にある、
monqy というデータベースの、
usersというテーブルに登録されているレコードの、
nameという項目の内容を、すべて表示する。
#!/usr/bin/python import cgi import psycopg2 import psycopg2.extras import os path = "localhost" port = "5432" dbname = "monqy" user = "postgres" password = "hogehoge" pg_params = "host={} port={} dbname={} user={} password={}" pg_params = pg_params.format(path,port,dbname,user,password) sql = """select * from users""" print('Content-Type: text/html; charset=utf-8') print('') print('') connection = psycopg2.connect(pg_params) cur = connection.cursor(cursor_factory=psycopg2.extras.DictCursor) cur.execute(sql) results = cur.fetchall() for row in results: print(row['name']) print("この例ではDBの内容を辞書形式で取得することによって、項目名で値を取り出している。
") cur.close connection.close print("")
せっかくDBを使っているのに名前を使わないなんてわざわざライブラリを使う意味がないだろうから辞書形式で取得するのは必須だろう。