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.
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")
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")
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")
Para mejorar la generación de consultas SQL con IA, necesitamos obtener el esquema de la base de datos (tablas y columnas).
cursor.execute("SELECT TABLE_NAME, COLUMN_NAME, DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS")
for fila in cursor.fetchall():
print(fila)
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)
cursor.execute("SELECT table_name, column_name,
data_type FROM information_schema.columns
WHERE table_schema = 'public'")
for fila in cursor.fetchall():
print(fila)
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}"
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)
Indice del curso
Capitulo anterior