sql >> Base de Datos >  >> RDS >> Mysql

Python SQL:cómo usar las bases de datos SQLite, MySQL y PostgreSQL con Python

Una de mis mayores alegrías como desarrollador es aprender cómo se cruzan las diferentes tecnologías.

A lo largo de los años he tenido la oportunidad de trabajar con diferentes tipos de software y herramientas. De las muchas herramientas que he usado, Python y el lenguaje de consulta estructurado (SQL) son dos de mis favoritas.

En este artículo voy a compartir con ustedes cómo interactúan Python y las diferentes bases de datos SQL.

Hablaré de las bases de datos más populares, SQLite, MySQL y PostgreSQL. Explicaré las diferencias clave de cada base de datos y los casos de uso correspondientes. Y terminaré el artículo con algo de código de Python.

El código le mostrará cómo escribir una consulta SQL para extraer datos de una base de datos PostgreSQL y almacenar los datos en un marco de datos pandas.

Si no está familiarizado con las bases de datos relacionales (RDBMS), le sugiero que consulte el artículo de Sameer sobre la terminología básica de RDBMS aquí. El resto del artículo utilizará los términos a los que se hace referencia en el artículo de Sameer.

SQLite

SQLite es mejor conocido por ser una base de datos integrada. Esto significa que no tiene que instalar una aplicación adicional o usar un servidor separado para ejecutar la base de datos.

Si está creando un MVP o no necesita mucho espacio de almacenamiento de datos, querrá optar por una base de datos SQLite.

Las ventajas son que puede moverse más rápido con una base de datos SQLite en relación con MySQL y PostgreSQL. Dicho esto, te quedarás atrapado con una funcionalidad limitada. No podrá personalizar funciones ni agregar un montón de funciones multiusuario.

MySQL/PostgreSQL

Existen claras diferencias entre MySQL y PostgreSQL. Dicho esto, dado el contexto del artículo, encajan en una categoría similar.

Ambos tipos de bases de datos son excelentes para soluciones empresariales. Si necesita escalar rápidamente, MySQL y PostgreSQL son su mejor opción. Proporcionarán una infraestructura a largo plazo y reforzarán su seguridad.

Otra razón por la que son excelentes para las empresas es que pueden manejar actividades de alto rendimiento. Las declaraciones de inserción, actualización y selección más largas necesitan mucha potencia informática. Podrá escribir esas declaraciones con menos latencia que la que le daría una base de datos SQLite.

¿Por qué conectar Python y una base de datos SQL?

Quizás se esté preguntando, "¿por qué debería preocuparme por conectar Python y una base de datos SQL?"

Hay muchos casos de uso para cuando alguien quiera conectar Python a una base de datos SQL. Como mencioné anteriormente, es posible que esté trabajando en una aplicación web. En este caso, necesitaría conectar una base de datos SQL para poder almacenar los datos provenientes de la aplicación web.

Tal vez trabaje en ingeniería de datos y necesite construir una canalización ETL automatizada. Conectar Python a una base de datos SQL le permitirá usar Python para sus capacidades de automatización. También podrá comunicarse entre diferentes fuentes de datos. No tendrás que cambiar entre diferentes lenguajes de programación.

Conectar Python y una base de datos SQL también hará que su trabajo de ciencia de datos sea más conveniente. Podrá usar sus habilidades de Python para manipular datos de una base de datos SQL. No necesitará un archivo CSV.

Cómo se conectan las bases de datos Python y SQL

Las bases de datos de Python y SQL se conectan a través de bibliotecas de Python personalizadas. Puede importar estas bibliotecas a su secuencia de comandos de Python.

Las bibliotecas de Python específicas de la base de datos sirven como instrucciones complementarias. Estas instrucciones guían a su computadora sobre cómo puede interactuar con su base de datos SQL. De lo contrario, su código de Python será un idioma extranjero para la base de datos a la que intenta conectarse.

Cómo configurar el proyecto

Tomemos una base de datos PostgreSQL, AWS Redshift, por ejemplo. Primero, querrá importar la biblioteca psycopg. Es una biblioteca Python universal para bases de datos PostgreSQL.

#Library for connecting to AWS Redshift
import psycopg

#Library for reading the config file, which is in JSON
import json

#Data manipulation library
import pandas as pd

Notará que también importamos las bibliotecas JSON y pandas. Importamos JSON porque crear un archivo de configuración JSON es una forma segura de almacenar las credenciales de su base de datos. ¡No queremos que nadie más los mire!

La biblioteca de pandas le permitirá utilizar todas las capacidades estadísticas de pandas para su secuencia de comandos de Python. En este caso, la biblioteca permitirá que Python almacene los datos que devuelve su consulta SQL en un marco de datos.

A continuación, querrá acceder a su archivo de configuración. El json.load() La función lee el archivo JSON para que pueda acceder a las credenciales de su base de datos en el siguiente paso.

config_file = open(r"C:\Users\yourname\config.json")
config = json.load(config_file)

Ahora que su secuencia de comandos de Python puede acceder a su archivo de configuración JSON, querrá crear una conexión de base de datos. Deberá leer y usar las credenciales de su archivo de configuración:

con = psycopg2.connect(dbname= "db_name", host=config[hostname], port = config["port"],user=config["user_id"], password=config["password_key"])
cur = con.cursor()

¡Acabas de crear una conexión de base de datos! Cuando importó la biblioteca psycopg, tradujo el código de Python que escribió anteriormente para hablar con la base de datos de PostgreSQL (AWS Redshift).

En sí mismo, AWS Redshift no entendería el código anterior. Pero debido a que importó la biblioteca psycopg, ahora habla un idioma que AWS Redshift puede entender.

Lo bueno de Python es que tiene bibliotecas para SQLite, MySQL y PostgreSQL. Podrá integrar las tecnologías con facilidad.

Cómo escribir una consulta SQL

Siéntase libre de descargar los datos del fútbol europeo a su base de datos PostgreSQL. Usaré sus datos para este ejemplo.

La conexión de la base de datos que creó en el último paso le permite escribir SQL para luego almacenar los datos en una estructura de datos compatible con Python. Ahora que ha establecido una conexión con la base de datos, puede escribir una consulta SQL para comenzar a extraer datos:

query = "SELECT *
         FROM League
         JOIN Country ON Country.id = League.country_id;"

Sin embargo, el trabajo aún no ha terminado. Debe escribir código adicional de Python que ejecute la consulta SQL:

#Runs your SQL query
execute1 = cur.execute(query)
result = cur.fetchall()

Luego, debe almacenar los datos devueltos en un marco de datos de pandas:

#Create initial dataframe from SQL data
raw_initial_df = pd.read_sql_query(query, con)
print(raw_initial_df)

Debería obtener un marco de datos de pandas (raw_initial_df) que se parece a esto:

Hay una base de datos para todos

SQLite, MySQL y PostgreSQL tienen sus pros y sus contras. El que seleccione debe depender de las necesidades de su proyecto o empresa. También debe considerar lo que necesita ahora frente a varios años más adelante.

Lo importante a recordar es que Python puede integrarse con cada tipo de base de datos.

Este artículo rasca la superficie de lo que es posible al conectar Python a una base de datos SQL. Me encanta ver las formas en que el software se cruza y se combina para agregar un valor increíble.

Si quieres más de este tipo de contenido, ¡puedes encontrarme en Course to Hire! Quiero ayudar a más personas a aprender a codificar y conseguir un trabajo en tecnología. Comuníquese si tiene alguna pregunta o si solo quiere saludar :)