Objetos de conexion
En cualquier interacción con una base de datos, da igual que lenguaje uses, vas a encontrar objetos comunes para comunicarte con esta.
Conocerlos te permitirá entender mejor cómo interactuar con la base de datos y cómo funcionan las operaciones que realizas.
Driver
Un driver es un software que permite a tu aplicación comunicarse con la base de datos. Es el intermediario entre tu código y el SGBD.
Cada lenguaje de programación tiene sus propios drivers para conectarse a diferentes bases de datos.
Lenguaje | Driver | Librería |
---|---|---|
Python | MySQL Connector | mysql-connector-python |
JavaScript/NodeJS | MySQL | mysql |
Java | MySQL Connector/J | mysql-connector-java |
Python | SQLite | sqlite3 |
JavaScript/NodeJS | SQLite | sqlite3 |
Java | SQLite JDBC | sqlite-jdbc |
Python | PostgreSQL | psycopg2 |
JavaScript/NodeJS | PostgreSQL | pg |
Java | PostgreSQL JDBC | postgresql |
Conexión
Da igual si tu base de datos es embedida (SQLite) o de tipo servidor (MySQL, PostgreSQL, etc.), siempre vas a necesitar conectarte a ella para poder realizar operaciones.
En el caso de SQLite el proceso es simple:
Desde la terminal:
En Python:
import sqlite3
def connect_to_db(db_name):
try:
connection = sqlite3.connect(db_name)
print("Conexión exitosa a la base de datos")
return connection
except sqlite3.Error as e:
print(f"Error al conectar a la base de datos: {e}")
return None
connection = connect_to_db("nombre_base_datos.db")
En JavaScript/NodeJS:
const sqlite3 = require('sqlite3').verbose();
let db = new sqlite3.Database('nombre_base_datos.db', (err) => {
if (err) {
console.error('Error al conectar a la base de datos:', err.message);
} else {
console.log('Conexión exitosa a la base de datos');
}
});
En el caso de bases de datos de tipo servidor, necesitarás:
- Host: Dirección del servidor donde está alojada la base de datos.
- Puerto: Puerto en el que el servidor escucha las conexiones (por defecto, MySQL usa el puerto 3306).
- Usuario: Nombre de usuario con el que te autenticarás.
- Contraseña: Contraseña del usuario.
- Base de datos: Nombre de la base de datos a la que deseas conectarte.
- Driver: Dependiendo del lenguaje, necesitarás un driver específico para conectarte a la base de datos (por ejemplo,
mysql-connector-python
para Python,mysql
para NodeJS, etc.).
En la terminal:
mysql -h host -P puerto -u usuario -p
# generalmente esta en el puerto 3306
mysql -u root -p
# por defecto, el usuario root de linux accede sin contraseña
sudo mysql
En Python:
import mysql.connector
from mysql.connector import Error
def create_connection(host_name, user_name, user_password, db_name):
connection = None
try:
connection = mysql.connector.connect(
host=host_name,
user=user_name,
password=user_password,
database=db_name
)
print("Conexión exitosa a la base de datos")
except Error as e:
print(f"Error: '{e}'")
return connection
def close_connection(connection):
if connection.is_connected():
connection.close()
print("Conexión cerrada")
connection = create_connection("host", "usuario", "password", "database")
if connection is None:
print("No se pudo establecer la conexión a la base de datos")
else:
cursor = connection.cursor()
cursor.execute("SELECT * FROM USUARIOS")
for row in cursor.fetchall():
print(row)
close_connection(connection)
En JavaScript/NodeJS:
Cerrar conexión
Es buena práctica cerrar la conexión a la base de datos cuando se ha terminado de ejecutar el código que la utiliza. Esto libera recursos y evita posibles problemas de conexión.
Ten en cuenta que la conexión es un proceso costoso, por lo que abrir y cerrar conexiones repetidamente puede afectar el rendimiento de tu aplicación.
En aplicaciones más grandes, es común utilizar un pool de conexiones para gestionar múltiples conexiones de manera eficiente.
Los pools de conexiones permiten reutilizar conexiones existentes en lugar de abrir y cerrar nuevas conexiones cada vez que se necesita acceder a la base de datos, lo que mejora el rendimiento y reduce la sobrecarga del sistema.
Cursor
El objeto conexión te permite crear un cursor, este objeto es el que realmente vas a utilizar para interactuar con la base de datos.
Es un objeto que representa una operación de consulta y te permite ejecutar comandos SQL, recuperar resultados y gestionar transacciones.
En Python, puedes crear un cursor de la siguiente manera:
import mysql.connector
from mysql.connector import Error
def create_connection(host_name, user_name, user_password, db_name):
connection = None
try:
connection = mysql.connector.connect(
host=host_name,
user=user_name,
password=user_password,
database=db_name
)
print("Conexión exitosa a la base de datos")
except Error as e:
print(f"Error: '{e}'")
return connection
def close_connection(connection):
if connection.is_connected():
connection.close()
print("Conexión cerrada")
conn = create_connection("host", "usuario", "password", "database")
cursor = conn.cursor()
cursor.execute("SELECT * FROM USUARIOS")
for row in cursor.fetchall():
print(row)
close_connection(conn)
cursor = connection.cursor()
En JavaScript/NodeJS, puedes crear un cursor de la siguiente manera:
const mysql = require('mysql');
const connection = mysql.createConnection({
host: 'host',
user: 'usuario',
password: 'password',
database: 'database'
});
connection.connect((err) => {
if (err) {
console.error('Error al conectar a la base de datos:', err);
return;
}
console.log('Conexión exitosa a la base de datos');
});
const query = 'SELECT * FROM USUARIOS';
connection.query(query, (error, results) => {
if (error) {
console.error('Error al ejecutar la consulta:', error);
return;
}
console.log('Resultados de la consulta:', results);
});