¿Cómo conectar MySQL y Python?
PyMySQL es la biblioteca utilizada para conectarse al servidor MySQL en la versión Python3.x. Mysqldb se usa en Python2.
PyMySQL sigue la especificación API v2.0 de la base de datos de Python y contiene una biblioteca cliente MySQL de Python pura.
Instalación de PyMySQL
Antes de usar PyMySQL, debemos asegurarnos de que PyMySQL esté instalado.
Dirección de descarga de PyMySQL: /PyMySQL/PyMySQL.
Si no, podemos usar el siguiente comando para instalar la última versión de PyMySQL:
$ pip3 install PyMySQL
Si tu sistema no soporta el pip comando, puede instalarlo de las siguientes maneras:
1 Utilice el comando git para descargar e instalar el paquete de instalación (también puede descargarlo manualmente):
$ git clone. /PyMySQL/PyMySQL $ CD PyMySQL/ $ python 3 setup .
2. Si necesita crear un número de versión, puede usar el comando curl para instalar:
$. # X.X es PyMySQL $ curl-l/PyMySQL/PyMySQL/ tarball/PyMySQL-X | tarxz $ CD PyMySQL * $ python 3 setup.
$ #Ahora puedes eliminar el directorio PyMySQL*.
Nota: asegúrese de tener permisos de root para instalar los módulos anteriores.
Durante el proceso de instalación, puede aparecer el mensaje de error "Error del importador: No hay módulo llamado setuptools", lo que significa que no has instalado las herramientas de configuración. ¿Se puede acceder a mit() excepto:? #¿Revertir cuando ocurre un error
? db.rollback()
#Cerrar la conexión de la base de datos db.close()
El ejemplo anterior también se puede escribir en la siguiente forma:
Ejemplo ( Python 3.0 o superior)
#!/usr/bin/python3
Importar pymysql
#Abrir conexión de base de datos db = pymysql.connect ("localhost", "testuser", "test123", "testdb").
#Utilice el método cursor() para obtener la operación cursor cursor = db.cursor().
#SQL insertar declaración SQL = "insertar en empleado(primer_nombre,\
? Apellido, edad, sexo, ingresos)\
?Valor ( ' s','s',?'s',?s)" ('Mac', 'Mohan', 20, 'M', 2000) Prueba: ? #¿Ejecutar sentencia sql
? Cursor.execute(sql)
? #¿Ejecutar sentencia sql
? Excepto db.commit():? #¿Revertir cuando ocurre un error
? db.rollback()
#Cerrar la conexión de la base de datos db.close()
El siguiente código utiliza variables para pasar parámetros a la declaración SQL:
. .. ........................user_id = " prueba 123 " contraseña = " contraseña " con ejecutar (' insertar en los valores de inicio de sesión, s)' \(ID de usuario, contraseña))................................ ..
Operación de consulta de base de datos
Python consulta Mysql usando el método fetchone() para obtener datos únicos y el método fetchall() para obtener múltiples datos.
buscar una():? Este método obtiene el siguiente conjunto de resultados de la consulta. El conjunto de resultados es un objeto.
buscar():? Reciba todas las filas de resultados devueltos.
Número de líneas:? Esta es una propiedad de solo lectura que devuelve el número de filas afectadas después de ejecutar el método ejecutar().
Ejemplo:
Consultar todos los datos de la tabla de empleados cuyo campo de salario sea mayor que 1000:
Ejemplo (Python 3.0 o superior)
#! /usr/bin/python3
Importar pymysql
#Abrir conexión de base de datos db = pymysql.connect ("localhost", "testuser", "test123", "testdb ").
#Utilice el método cursor() para obtener la operación cursor cursor = db.cursor().
# Declaración de consulta SQL sql = "SELECCIONAR * DEL EMPLEADO \
? ¿Qué ingresos gts" (1000) intenta:? #¿Ejecutar sentencia SQL
? Cursor.execute(sql)
? #¿Obtener la lista de todos los registros
? resultados = cursor.fetchall()
? Para filas en el resultado: fname = fila[0]
? nombrel = fila[1]
? Edad=OK[2]
? sexo = fila[3]
? Ingresos = fila [4]
? #¿Imprimir resultados
? print ("fnombre=s, lnombre=s, edad=s, sexo=s, ingresos=s" \ (fnombre, lnombre, edad, sexo, ingresos)) excepto:? print("Error: No se pueden obtener datos")
#Cerrar la conexión de la base de datos db.close()
Los resultados de la ejecución del script anterior son los siguientes:
fname=Mac, lname=Mohan, edad=20, género=M, ingresos=2000
Operación de actualización de la base de datos
La operación de actualización se utiliza para actualizar los datos en el tabla de datos. El siguiente ejemplo incrementa el campo de edad con género "m" en la tabla TESTDB en 1:
Ejemplo (Python 3.0 y superior)
#!/usr/bin/python3 p>
Importar pymysql
#Abra la conexión de la base de datos db = pymysql.connect ("localhost", "testuser", "test123", "testdb").
#Utilice el método cursor() para obtener la operación cursor cursor = db.cursor().
# Declaración de actualización de SQL SQL = " actualizar el conjunto de empleados edad = edad 1 donde sexo = ' c ' "(' m ')intenta:? #¿Ejecutar sentencia SQL
? Cursor.execute(sql)
? #¿Enviar a la base de datos para su ejecución
? Excepto db.commit():? #¿Revertir cuando ocurre un error
? db.rollback()
#Cerrar la conexión de la base de datos db.close()
Operación de eliminación
La operación de eliminación se utiliza para eliminar datos en la tabla de datos . El siguiente ejemplo demuestra cómo eliminar todos los datos en la tabla de datos de empleados cuya edad sea mayor a 20 años:
Ejemplo (Python 3.0 y superior)
#!/usr/bin/python3
Importar pymysql
#Abrir conexión de base de datos db = pymysql.connect ("localhost", "testuser", "test123", "testdb").
#Utilice el método cursor() para obtener la operación cursor cursor = db.cursor().
#SQL declaración de eliminación SQL = "eliminar del empleador donde las edades" (20) ¿Intenta:? #¿Ejecutar sentencia SQL
? Cursor.execute(sql)
? #¿Confirmar cambios
? Excepto db.commit():? #¿Revertir cuando ocurre un error
? db.rollback()
#Cerrar la conexión db.close()
Asuntos administrativos
El mecanismo de transacción puede garantizar la coherencia de los datos.
Una transacción debe tener cuatro propiedades: atomicidad, consistencia, aislamiento y durabilidad. Estas cuatro propiedades a menudo se denominan características ácidas.
Una transacción atómica es una unidad de trabajo indivisible y todas las operaciones incluidas en la transacción se completan o no.
Coherencia (consistencia). Una transacción debe cambiar la base de datos de un estado consistente a otro. La consistencia está estrechamente relacionada con la atomicidad.
Cuarentena (cuarentena). La ejecución de una transacción no puede verse interferida por otras transacciones. En otras palabras, las operaciones y los datos utilizados en una transacción están aislados de otras transacciones concurrentes y las transacciones concurrentes no pueden interferir entre sí.
Durabilidad (durabilidad). La durabilidad, también conocida como permanencia, significa que una vez que se confirma una transacción, sus cambios en los datos de la base de datos deben ser permanentes. Otras operaciones o fallos posteriores no deberían tener impacto en él.
Las transacciones en Python DB API 2.0 proporcionan dos métodos: confirmar o revertir.
Ejemplo
Ejemplo (Python 3.0 y superior)
# Declaración de eliminación de registro SQL SQL = "eliminar del empleado con edades> s" (20) Pruebe: ? #¿Ejecutar sentencia SQL
? Cursor.execute(sql)
? #Enviar a la base de datos
? Excepto db.commit():? #¿Revertir cuando ocurre un error
? db.rollback()
Para bases de datos que admiten transacciones, en la programación de bases de datos Python, cuando se crea un cursor, se iniciará automáticamente una transacción de base de datos invisible.
El método Commit() se utiliza para actualizar todas las operaciones del cursor y el método rollback() se utiliza para revertir todas las operaciones del cursor actual. Cada método inicia una nueva transacción.
Manejo de errores
La API de base de datos define algunos errores y excepciones de operación de la base de datos. La siguiente tabla enumera estos errores y excepciones:
Anormal
. Descripción
Cuando ocurre una advertencia grave, se activará una advertencia, por ejemplo, los datos insertados se truncarán, etc. Debe ser una subclase de StandardError.
Todas las demás categorías de errores excepto advertencias de error. Debe ser una subclase de StandardError.
Cuando se produce un error en el módulo de interfaz de la base de datos (no un error de la base de datos), se activará InterfaceError. Debe ser una subclase de Error.
DatabaseError se activa cuando ocurre un error relacionado con la base de datos. Debe ser una subclase de Error.
DataError se activa cuando ocurre un error en el procesamiento de datos, como un error de división por cero, datos fuera de rango, etc. Debe ser una subclase de DatabaseError.
OperationalError se refiere a un error que no está controlado por el usuario pero que ocurre al operar la base de datos. Por ejemplo, la conexión se desconecta inesperadamente, no se puede encontrar el nombre de la base de datos, falla en la transacción, error de asignación de memoria, etc. Debe ser una subclase de DatabaseError.
IntegrityError Errores relacionados con la integridad, como fallas en la verificación de clave externa, etc.
Debe ser una subclase de DatabaseError.
InternalError Errores internos en la base de datos, como falla del cursor, falla de sincronización de transacciones, etc. Debe ser una subclase de DatabaseError.
Errores de programa de ProgrammingError, como tabla no encontrada o que ya existe, error de sintaxis en la declaración SQL, número incorrecto de parámetros, etc. Debe ser una subclase de DatabaseError.
NotSupportedError es un error no soportado, que hace referencia al uso de funciones o API que no son soportadas por la base de datos. Por ejemplo, en. La función rollback() se utiliza para objetos de conexión, pero la base de datos no admite transacciones o la transacción se ha cerrado. Debe ser una subclase de DatabaseError.