Red de conocimiento informático - Material del sitio web - Cómo escribir SQL usando Python

Cómo escribir SQL usando Python

Python puede utilizar el módulo pymysql para operar la base de datos.

¿Qué es PyMySQL?

PyMySQL es una biblioteca que se usa para conectarse al servidor MySQL en Python3.x, y mysqldb se usa en Python2.

PyMySQL sigue la especificación Python Database API v2.0 e incluye la biblioteca cliente MySQL pura de Python.

Instalación de PyMySQL

Antes de usar PyMySQL, debemos asegurarnos de que PyMySQL esté instalado.

Dirección de descarga de PyMySQL: /PyMySQL/PyMySQL.

Si aún no está instalado, podemos usar el siguiente comando para instalar la última versión de PyMySQL:

$ pip3 install PyMySQL

Si tu sistema lo tiene no es compatible con el comando pip. 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/$ python3 setup.py install

2. Si necesita especificar un número de versión, puede usar el comando curl para instalar:

$ # X.X es el número de versión de PyMySQL $ curl -L /PyMySQL/PyMySQL/ tarball/pymysql-X.

El mensaje de error "ImportError: No hay módulo llamado setuptools" puede aparecer durante el proceso de instalación, lo que significa que no ha instalado setuptools. Puede acceder a mit()excepto: # Revertir si se produce un error.

? db.rollback()

# Cerrar la conexión de la base de datos db.close()

El ejemplo anterior también se puede escribir de la siguiente forma:

Ejemplo (Python 3.0)

#!/usr/bin/python3

import pymysql

# Abrir 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()

# Sentencia de inserción SQL sql = "INSERT INTO EMPLOYEE(FIRST_NAME, \

? APELLIDO, EDAD, SEXO, INGRESOS) \

? VALUES ('s', 's' , ?s, ?'s', ? s)" \ ? ('Mac', 'Mohan', 20, 'M', 2000)intenta: ? # Ejecutar instrucción SQL

? cursor.execute (sql)

? # Ejecutar instrucción sql

? db.commit()except: ? # ¿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 = "test123"contraseña = "contraseña"con.execute('insertar en valores de inicio de sesión( s, ?s)' \ (user_id, contraseña ))......... ........................

Operación de consulta de base de datos

Python consulta Mysql usando el método fetchone() Para obtener un solo dato, use el método fetchall() para obtener múltiples datos.

fetchone():? Este método obtiene el siguiente conjunto de resultados de la consulta. El conjunto de resultados es un objeto

fetchall():?Recibe todas las filas de resultados devueltos.

rowcount:?Este es un atributo de solo lectura y devuelve el efecto después de ejecutar la ejecución. () método número de filas.

Ejemplo:

Consultar todos los datos de la tabla EMPLEADO cuyo campo salario sea mayor que 1000:

Ejemplo (Python 3.0)

#!/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 = "SELECT * FROM EMPLOYEE \

? WHERE INGRESO gt; s" (1000)intenta: ? #Ejecutar sentencia SQL

? cursor.execute(sql)

? #Obtener una lista de todos los registros

? resultados = cursor.fetchall()

? para la fila en resultados: ?fname = fila[0]

?lname = fila[1]

? edad = fila[2]

?sexo = fila[3]

?ingresos = fila[4]

# Imprimir resultados

?print ("fname=s,lname=s,edad=s,sex=s,ingresos=s" \ (fname, lname, edad, sexo, ingresos))excepto: ?print (" Error: no se pueden recuperar 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, age =20, sexo=M, ingresos= 2000

Operación de actualización de la base de datos

La operación de actualización se utiliza para actualizar datos en la tabla de datos. El siguiente ejemplo incrementa el campo EDAD con SEXO de. 'M' en la tabla TESTDB por 1:

Ejemplo (Python 3.0)

#!/usr/bin/python3

importar pymysql

#Abrir conexión de base de datos db = pymysql.connect(" localhost", "testuser", "test123", "TESTDB" )

# Usar el método cursor() para obtener la operación cursor cursor = db.cursor()

# Declaración de actualización de SQL sql = "ACTUALIZAR CONJUNTO DE EMPLEADO EDAD = EDAD 1 DONDE SEXO = 'c'" ('M')intenta: # Ejecutar instrucción SQL

? cursor.execute(sql)

? # Enviar a la base de datos para su ejecución

? db.commit()except: # 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 el datos en la tabla de datos.

Datos, el siguiente ejemplo demuestra cómo eliminar todos los datos con una EDAD mayor a 20 en la tabla de datos EMPLEADO:

Ejemplo (Python 3.0)

#!/usr/bin/python3

importar pymysql

# Abrir la conexión de la base de datos db = pymysql.connect("localhost", "testuser", "test123", "TESTDB" )

# Usar el método cursor() Obtener la operación cursor cursor = db.cursor()

# Declaración de eliminación de SQL sql = "ELIMINAR DEL EMPLEADO DONDE EDAD gt; s" (20)intenta: # Ejecutar la declaración SQL

? cursor.execute(sql)

? # Confirmar cambios

? db.commit()except: # ¿Revertir cuando ocurre un error?

? db. rollback()

# Cerrar la conexión db.close()

Ejecutar transacciones

El mecanismo de transacción puede garantizar la coherencia de los datos.

Las transacciones deben tener cuatro atributos: atomicidad, consistencia, aislamiento y durabilidad. Estas cuatro propiedades a menudo se denominan propiedades ÁCIDAS.

Atomicidad. Una transacción es una unidad de trabajo indivisible. Todas las operaciones incluidas en la transacción se realizan o no se realizan.

Consistencia. Una transacción debe cambiar la base de datos de un estado de coherencia a otro. La consistencia y la atomicidad están estrechamente relacionadas.

Aislamiento. La ejecución de una transacción no puede verse interferida por otras transacciones. Es decir, las operaciones y los datos utilizados dentro de una transacción están aislados de otras transacciones simultáneas y las transacciones ejecutadas simultáneamente no pueden interferir entre sí.

Durabilidad. La continuidad, 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. Las operaciones o fallos posteriores no deberían tener ningún impacto en él.

Las transacciones de Python DB API 2.0 proporcionan dos métodos de confirmación o reversión.

Ejemplo

Ejemplo (Python 3.0)

# Declaración de eliminación de registro SQL sql = "ELIMINAR DEL EMPLEADO DONDE EDAD gt; s" (20)intenta:? # Ejecutar sentencia SQL

? cursor.execute(sql)

? # Enviar a la base de datos

? db.commit()except: # ¿Cuándo se produce un error? ocurre Rollback

? db.rollback()

Para bases de datos que admiten transacciones, en la programación de bases de datos Python, cuando se crea el cursor, se inicia automáticamente una transacción de base de datos invisible.

El método commit() realiza todas las operaciones de actualización en el cursor y el método rollback() revierte todas las operaciones en el cursor actual. Cada método inicia una nueva transacción.

Manejo de errores

La API de base de datos define algunos errores y excepciones para las operaciones de la base de datos. La siguiente tabla enumera estos errores y excepciones:

Excepciones

Descripción

La advertencia se activa cuando hay una advertencia grave, por ejemplo, los datos insertados están truncados, etc. Debe ser una subclase de StandardError.

Error Todas las demás clases de error excepto advertencias. Debe ser una subclase de StandardError.

InterfaceError se activa cuando ocurre un error en el módulo de interfaz de la base de datos (no un error en la base de datos). 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 durante 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 errores que no están controlados por el usuario, pero que ocurren al operar la base de datos. Por ejemplo: la conexión se desconecta inesperadamente, no se encuentra el nombre de la base de datos, falla el procesamiento de transacciones, errores de asignación de memoria, etc. son errores que ocurren al operar la base de datos. 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 DatabaseError.

InternalError Error interno de la base de datos, como falla del cursor, falla de sincronización de transacciones, etc. Debe ser una subclase DatabaseError.

ProgrammingError Error de programación, como tabla de datos no encontrada o que ya existe, error de sintaxis de declaración SQL, número incorrecto de parámetros, etc. Debe ser una subclase de DatabaseError.

NotSupportedError es un error no admitido, lo que significa que se utiliza una función o API que no es compatible con la base de datos. Por ejemplo, la función .rollback() se usa en el objeto de conexión, pero la base de datos no admite transacciones o la transacción se ha cerrado. Debe ser una subclase de DatabaseError.