Saltear al contenido principal

Configuración de PostgreSQL con Python 3 y psycopg en Ubuntu 16.04

PostgreSQL es una poderosa base de datos relacional de código abierto que se usa con frecuencia para crear, leer, actualizar y eliminar datos de aplicaciones web Python.
Psycopg2 es un controlador de base de datos PostgreSQL que sirve como cliente Python para acceder al servidor PostgreSQL. Esta publicación explica cómo instalar PostgreSQL en Ubuntu 16.04 y ejecutar algunas consultas SQL básicas dentro de un programa Python.

Contrata a un experto en Python para iniciar tu proyecto hoy mismo:

No cubriremos los mapeadores relacionales de objetos (ORM) en este tutorial, pero estos pasos se pueden usar como un requisito previo para trabajar con un ORM como SQLAlchemy o Peewee.

Herramientas que necesitamos

Nuestro tutorial debería funcionar con Python 2 o 3, aunque todos los pasos se probaron específicamente con Python 3.5. Además del intérprete de Python, aquí están los otros componentes que usaremos:

Si no está seguro de cómo instalar pip y virtualenv, revise los primeros pasos de la guía de cómo configurar Python 3, Bottle y Green Unicorn en Ubuntu 16.04 LTS.

Instalar PostgreSQL

Instalaremos PostgreSQL a través del apt gerente de empaquetación. Hay algunos paquetes que necesitamos ya que queremos ejecutar PostgreSQL y usar el controlador psycopg2 con nuestros programas Python. PostgreSQL también se instalará como un servicio del sistema para que podamos iniciar, detener y recargar su configuración cuando sea necesario con el service mando. Abra la terminal y ejecute:

sudo apt-get install postgresql libpq-dev postgresql-client postgresql-client-common

Entra tu sudo contraseña cuando se le solicite e ingrese ‘sí’ cuando apt le pregunta si desea instalar los nuevos paquetes.

Después de unos momentos apt terminará de descargar, instalar y procesar.

Ahora tenemos PostgreSQL instalado y el servicio PostgreSQL se está ejecutando en segundo plano. Sin embargo, necesitamos crear un usuario y una instancia de base de datos para comenzar a usarlo realmente. Utilizar el sudo comando para cambiar a la nueva cuenta «postgres».

Dentro de la cuenta «postgres», cree un usuario desde la línea de comando con el
createuser mando. PostgreSQL le presentará varias preguntas. Responda «n» al superusuario y «y» a las otras preguntas.

createuser matt -P --interactive

Genial, ahora tenemos un usuario de PostgreSQL que coincide con nuestra cuenta de inicio de sesión de Ubuntu. Salga de la cuenta de postgres presionando la tecla «Ctrl» junto con «d» en el shell. Estamos de vuelta en nuestra propia cuenta de usuario.

Cree una nueva base de datos que podamos usar para realizar pruebas. Puedes nombrarlo «testpython» o como quieras para tu aplicación.

Ahora podemos interactuar con «testpython» a través de la herramienta de línea de comandos de PostgreSQL.

Interactuar con PostgreSQL

los psql El cliente de línea de comandos es útil para conectarse directamente a nuestro servidor PostgreSQL sin ningún código Python. Poner a prueba o probar psql usando este comando en el indicador:

El cliente PostgreSQL se conectará al servidor localhost. El cliente ahora está listo para ingresar:

Pruebe el símbolo del sistema de PostgreSQL con comandos como dt y
dd. También podemos ejecutar consultas SQL como «SELECT * from testpython», aunque eso no nos devolverá ningún dato todavía porque no hemos insertado ninguno en la base de datos. Puede encontrar una lista completa de comandos de PostgreSQL en el
documentación psql.

Instalación de psycopg2

Ahora que PostgreSQL está instalado y tenemos una cuenta que no es de superusuario, podemos instalar el psycopg2 paquete. Averigüemos dónde está nuestro python3 se encuentra el ejecutable, cree un virtualenv con python3, active virtualenv y luego instale el paquete psycopg2 con pip. Encuentra tu python3 ejecutable usando el which mando.

Veremos una salida como la que se muestra en esta captura de pantalla.

Cree un nuevo virtualenv en su directorio de inicio o en cualquier lugar donde almacene sus virtualenv de Python. Especifique la ruta completa a su python3
instalación.

# specify the system python3 installation
virtualenv --python=/usr/bin/python3 venvs/postgrestest

Active el virtualenv.

source ~/venvs/postgrestest/bin/activate

A continuación, podemos instalar el paquete Python psycopg2 desde
PyPI utilizando el pip mando.

¡Dulce, tenemos nuestro controlador PostgreSQL instalado en nuestro virtualenv! Ahora podemos probar la instalación escribiendo algunas líneas de código Python.

Usando PostgreSQL desde Python

Inicie Python REPL con el python o python3 mando. También puede escribir el siguiente código en un archivo de Python como «testpostgres.py» y luego ejecutarlo con python testpostgres.py. Asegúrese de reemplazar los valores de «usuario» y «contraseña» por los suyos.

import psycopg2

try:
    connect_str = "dbname='testpython' user='matt' host='localhost' " + 
                  "password='myOwnPassword'"
    # use our connection values to establish a connection
    conn = psycopg2.connect(connect_str)
    # create a psycopg2 cursor that can execute queries
    cursor = conn.cursor()
    # create a new table with a single column called "name"
    cursor.execute("""CREATE TABLE tutorials (name char(40));""")
    # run a SELECT statement - no data in there, but we can try it
    cursor.execute("""SELECT * from tutorials""")
    conn.commit() # <--- makes sure the change is shown in the database
    rows = cursor.fetchall()
    print(rows)
    cursor.close()
    conn.close()
except Exception as e:
    print("Uh oh, can't connect. Invalid dbname, user or password?")
    print(e)

Cuando ejecutamos el código anterior, no obtendremos nada elegante, solo una lista vacía impresa. Sin embargo, en esas pocas líneas de código hemos asegurado que nuestra conexión a nuestra nueva base de datos funcione y podemos crear nuevas tablas en ella, así como consultarlas.

Eso es suficiente gancho para comenzar a escribir consultas SQL más complicadas utilizando psycopg2 y PostgreSQL. Asegúrese de consultar las páginas de PostgreSQL, bases de datos relacionales y mapeadores relacionales de objetos (ORM) para obtener más tutoriales.

Preguntas? Pío @fullstackpython
o publicar un mensaje en el
Página de Facebook de Mundo Python Python.

¿Ves algo mal en esta publicación? Tenedor
la fuente de esta página en GitHub
y envíe una solicitud de extracción.

¿Necesitas ayuda para revisar el código de tu proyecto?



Esta entrada tiene 0 comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Volver arriba