Conexion a Bases de Datos SQL

Conexion a Bases de Datos SQL

En este mรณdulo aprenderรกs cรณmo conectar tu aplicaciรณn con una base de datos SQL. Configuraremos la conexiรณn a diferentes motores de bases de datos, aprenderemos a extraer el esquema de las tablas y verificaremos que las consultas generadas por IA sean vรกlidas.

๐Ÿ”น 2.1 Introducciรณn a los Motores de Bases de Datos SQL

  • ยฟQuรฉ es un motor de base de datos y cรณmo funciona?
  • Comparaciรณn entre SQL Server, MySQL, PostgreSQL y SQLite.
  • Conexiรณn desde Python a cada uno de estos motores.

๐Ÿ”น 2.2 Configuraciรณn de la Conexiรณn a SQL Server

Para conectarnos a una base de datos SQL Server desde Python, utilizamos pyodbc.

Primero, instalamos la librerรญa:

pip install pyodbc

Luego, creamos la conexiรณn:

import pyodbc

conexion = pyodbc.connect("DRIVER={SQL Server};SERVER=localhost;DATABASE=mi_base;Trusted_Connection=yes;")
cursor = conexion.cursor()
print("Conexiรณn exitosa a SQL Server")

๐Ÿ”น 2.3 Configuraciรณn de la Conexiรณn a MySQL

Para MySQL, utilizamos mysql-connector-python:

pip install mysql-connector-python

Y creamos la conexiรณn:

import mysql.connector

conexion = mysql.connector.connect(
    host="localhost",
    user="root",
    password="mi_contraseรฑa",
    database="mi_base"
)
cursor = conexion.cursor()
print("Conexiรณn exitosa a MySQL")

๐Ÿ”น 2.4 Configuraciรณn de la Conexiรณn a PostgreSQL

Para PostgreSQL, utilizamos psycopg2:

pip install psycopg2

Y establecemos la conexiรณn:

import psycopg2

conexion = psycopg2.connect(
    host="localhost",
    database="mi_base",
    user="postgres",
    password="mi_contraseรฑa"
)
cursor = conexion.cursor()
print("Conexiรณn exitosa a PostgreSQL")

๐Ÿ”น 2.5 Extracciรณn del Esquema de la Base de Datos

Para mejorar la generaciรณn de consultas SQL con IA, necesitamos obtener el esquema de la base de datos (tablas y columnas).

โœ… Obtener el Esquema en SQL Server

cursor.execute("SELECT TABLE_NAME, COLUMN_NAME, DATA_TYPE 
FROM INFORMATION_SCHEMA.COLUMNS")
for fila in cursor.fetchall():
    print(fila)

โœ… Obtener el Esquema en MySQL

cursor.execute("SELECT TABLE_NAME, COLUMN_NAME, 
DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_SCHEMA = 'mi_base'")
for fila in cursor.fetchall():
    print(fila)

โœ… Obtener el Esquema en PostgreSQL

cursor.execute("SELECT table_name, column_name, 
data_type FROM information_schema.columns 
WHERE table_schema = 'public'")
for fila in cursor.fetchall():
    print(fila)

๐Ÿ”น 2.6 Validaciรณn de Consultas Generadas por IA

Antes de ejecutar una consulta SQL generada por IA, es recomendable validarla. Podemos usar la siguiente funciรณn para verificar errores:

def validar_sql(query, cursor):
    try:
        cursor.execute("EXPLAIN " + query)
        return "Consulta vรกlida"
    except Exception as e:
        return f"Error en la consulta: {e}"

๐Ÿ”น 2.7 Prueba de Conexiรณn con un Chatbot SQL

Ahora, conectamos la IA con la base de datos para probar consultas generadas automรกticamente.

import ollama

def generar_consulta(pregunta):
    prompt = f"Genera una consulta SQL basada en la 
pregunta: {pregunta}. Solo devuelve la consulta SQL 
sin explicaciones."
    respuesta = ollama.chat(model="sqlcoder", messages=[{"role": "user", "content": prompt}])
    return respuesta['message']['content']

pregunta_usuario = "ยฟCuรกntos productos hay en la tabla 
Productos?"
consulta_sql = generar_consulta(pregunta_usuario)

print("Consulta generada:", consulta_sql)
cursor.execute(consulta_sql)
resultados = cursor.fetchall()
print(resultados)

๐Ÿ“Œ Conclusiรณn del Mรณdulo 2. Conexion a Bases de Datos SQL

  • Aprendiste a conectar Python con SQL Server, MySQL y PostgreSQL.
  • Extrajiste el esquema de la base de datos para ayudar a la IA.
  • Implementaste una validaciรณn de consultas SQL.
  • Probaste una consulta generada automรกticamente con IA.

Indice del curso

Curso Agente IA texto a sql

Capitulo anterior

Introducciรณn a la IA para SQL