Conexión entre Python y Postgres

Primero debemos instalar Postgres

Instalación del driver PostgreSQL para conectarse desde Python

Existen varios drivers Python para PostgreSQL, para diferentes plataformas y versiones de Python. El más popular es psycopg, el cual soporta actualmente todas las versiones de Python desde 2.5 hasta 3.4 sobre plataformas Unix y Windows. Pero en mi caso decidí utilizar el driver pg8000, que está desarrollado íntegramente con Python y es liberado con licencia BSD. Además, es el driver utilizado por el framework Web2Py.

Los siguientes son los paquetes necesarios para conectar python con Postgres

sudo apt install python3-postgresql python3-psycopg2 python3-dev python3-pg8000 libapache2-mod-python

En el sitio oficial existe una buena guía con ejemplos de conexión a PostgreSQL desde Python.

Creación de un script Python para verificar el acceso mediante HTTP

Para lo siguiente, se asume que se utilizo mi manual para configurar el servidor web.

Ahora creamos un script que verifique el acceso a todos los servicios.

nano ~/public_html/postgres.py

El siguiente script se conecta al motor de bases de datos PostgreSQL utilizando el usuario "juaramir" para consultar la versión del motor (ejecutando la consulta select version();):

#!/usr/bin/python

# coding=utf-8

# Imprimir los headers HTTP

print("Content-Type: text/html")

print("")

# Imprimir el contenido de la página

print("<h2>Hola mundo</h2>")

print("<p>Prueba de ejecuci&oacute;n de script Python en modo CGI.</p>")

# Mostrar la versi&oacute;n de Postgres

import pg8000

con = pg8000.connect(user="juaramir", password="123456", host="localhost", database="postgres")

c = con.cursor()

c.execute("select version()")

v = "".join(c.fetchone())

print("<p>La versi&oacute;n de PostgreSQL es: <b>%s</b></p>" % v.encode("utf-8"))

Recuerda cambiar los datos por los tuyos.

Guardar los cambios y ajustar los permisos adecuadamente

sudo chmod +x ~/public_html/postgres.py

Verificar el funcionamiento desde línea de comandos:

python3 postgres.py 

Fuente: https://www.linuxito.com/gnu-linux/nivel-medio/655-linux-apache-python-postgresql