エラーが出ては足りないものをインストールした結果、
以下が必要であった。
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("
")
cur.close
connection.close
print("")
この例ではDBの内容を辞書形式で取得することによって、項目名で値を取り出している。 せっかくDBを使っているのに名前を使わないなんてわざわざライブラリを使う意味がないだろうから辞書形式で取得するのは必須だろう。