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.
Esta entrada tiene 0 comentarios