Conexión y Operaciones con MySQL en Python

Para comenzar, enstale la biblioteca PyMySQL utilizando pip:

pip install pymysql

Conexión a la Base de Datos

A continuación se muestra cómo conectar Python a una base de datos MySQL usando PyMySQL:

import pymysql
db_con = pymysql.connect(host='127.0.0.1', user='usuario', password='clave', db='ejemplo')
cursor = db_con.cursor()
cursor.execute("SELECT VERSION()")
resultado = cursor.fetchone()
print("Versión de la base de datos: %s" % resultado)
db_con.close()

Creación de Tablas

Ejemplo de creación de una tabla en MySQL:

import pymysql
conn = pymysql.connect(host="localhost", user="admin", password="secreto", database="prueba")
cursor = conn.cursor()

# Eliminar tabla si existe
cursor.execute("DROP TABLE IF EXISTS PERSONAL")

# Crear nueva tabla
sql_creacion = """CREATE TABLE PERSONAL (
    NOMBRE VARCHAR(50) NOT NULL,
    APELLIDO VARCHAR(50),
    EDAD INT,
    GENERO CHAR(1),
    SALARIO FLOAT )"""
cursor.execute(sql_creacion)
conn.close()

Operaciones de Datos

Inserción de Datos

Agregar registros a una tabla:

import pymysql
db_con = pymysql.connect("localhost", "admin", "secreto", "prueba")
cursor = db_con.cursor()
sql_insert = "INSERT INTO PERSONAL(NOMBRE, APELLIDO, EDAD, GENERO, SALARIO) VALUES ('Juan', 'Perez', 30, 'M', 3000)"
try:
    cursor.execute(sql_insert)
    db_con.commit()
except:
    db_con.rollback()
db_con.close()

Consulta de Datos

Usando fetchone() y fetchall() para obtener resultados:

import pymysql
db_con = pymysql.connect("localhost", "admin", "secreto", "prueba")
cursor = db_con.cursor()
sql_query = "SELECT * FROM PERSONAL WHERE SALARIO > %s" % (2000)
try:
    cursor.execute(sql_query)
    resultados = cursor.fetchall()
    for fila in resultados:
        print("Nombre=%s, Apellido=%s, Edad=%s, Genero=%s, Salario=%s" % (fila[0], fila[1], fila[2], fila[3], fila[4]))
except:
    print("Error al obtener datos")
db_con.close()

Actualización de Datos

Actualizar registros existentes:

import pymysql
db_con = pymysql.connect("localhost", "admin", "secreto", "prueba")
cursor = db_con.cursor()
sql_update = "UPDATE PERSONAL SET EDAD = EDAD + 1 WHERE GENERO = '%c'" % ('F')
try:
    cursor.execute(sql_update)
    db_con.commit()
except:
    db_con.rollback()
db_con.close()

Borrado de Datos

Eliminar registros basados en una condición:

import pymysql
db_con = pymysql.connect("localhost", "admin", "secreto", "prueba")
cursor = db_con.cursor()
sql_delete = "DELETE FROM PERSONAL WHERE EDAD > %s" % (30)
try:
    cursor.execute(sql_delete)
    db_con.commit()
except:
    db_con.rollback()
db_con.close()

Copia de Seguridad de Datos

Utilizando mysqldump para respaldos:

# Respaldar una sola base de datos
mysqldump -uusuario -pclave bd1 > bd1.sql

# Respaldar múltiples bases de datos
mysqldump -uusuario -pclave --databases bd1 bd2 > bd1_bd2.sql

# Respaldar todas las bases de datos
mysqldump -uusuario -pclave --all-databases > todo.sql

Transacciones y Bloqueos

Ejemplo básico de uso de transacciones y bloqueos:

begin;
SELECT * FROM empleados WHERE id = 1 FOR UPDATE;
UPDATE empleados SET salario=12000 WHERE id = 1;
commit;

Etiquetas: PyMySQL MySQL Python transacciones backup

Publicado el 9-6 04:28