Cómo usar Python para conectarse a la base de datos, insertar y consultar datos
DB-API es una especificación. Define un conjunto de objetos necesarios y métodos de acceso a la base de datos para proporcionar interfaces de acceso consistentes para varios sistemas de bases de datos subyacentes y varios programas de interfaz de bases de datos.
DB-API de Python implementa la interfaz de la mayoría de las bases de datos, por lo que la conexión a cada base de datos funciona de la misma manera.
Proceso de uso de Python DB-API:
Introduzca el módulo API.
Obtener la conexión a la base de datos.
Ejecutar sentencias SQL y procedimientos almacenados.
Cierra la conexión a la base de datos.
¿Qué es MySQLdb?
MySQLdb es la interfaz para que Python se conecte a la base de datos Mysql. Implementa la especificación API de la base de datos Python V2.0 basada en la API MySQL C.
¿Cómo instalar MySQLdb?
Para utilizar DB-API para escribir scripts MySQL, debe asegurarse de que MySQL esté instalado. Copie el siguiente código y ejecute:
#! /usr/bin/python
# -*- Codificación: UTF-8 -*-
importar MySQLdb
Si el resultado después de la ejecución es el siguiente, significa que no tienes el módulo MySQLdb instalado:
Rastreo (llamada más reciente):
Archivo "test.py", línea 3, en
importar MySQLdb
ImportError: No hay módulo llamado MySQLdb
Para instalar MySQLdb, (para plataformas Linux puede visitar :) Desde aquí puede elegir la instalación adecuada para su plataforma Paquetes y los paquetes de instalación se dividen en archivos binarios precompilados y paquetes de instalación de código fuente.
Si selecciona una distribución binaria, el proceso de instalación se completará en el mensaje de instalación. Si realiza la instalación desde el código fuente, debe cambiar al directorio de nivel superior de la distribución MySQLdb y escribir el siguiente comando:
$ gunzip MySQL-python-1.2.2.tar.gz
$ tar -xvf MySQL-python-1.2.2.tar
$ cd MySQL-python-1.2.2
$ python setup.py build
$ python setup.py install
NOTA: Asegúrese de tener permisos de root para instalar los módulos anteriores.
Conexión de Base de Datos
Antes de conectarse a la base de datos, asegúrese de lo siguiente:
Ha creado la base de datos TESTDB.
En la base de datos TESTDB, has creado la tabla EMPLOYEE
Los campos de la tabla EMPLOYEE son FIRST_NAME y LAST_NAME
Utiliza el nombre de usuario "testuser" y contraseña "test123" para conectarse A la base de datos TESTDB, puede configurarla usted mismo o usar directamente el nombre de usuario y la contraseña raíz. Para la autorización del usuario de la base de datos Mysql, utilice el comando Grant.
El módulo Python MySQLdb ya está instalado en su máquina.
Si no está familiarizado con las sentencias SQL, puede visitar nuestro Tutorial de conceptos básicos de SQL
Ejemplo:
El siguiente ejemplo enlaza con la base de datos Mysql TESTDB:
#! /usr/bin/python
# -*- Codificación: UTF-8 -*-
importar MySQLdb
# Abrir una conexión de base de datos
db = MySQLdb.connect("localhost", "testuser", "test123", "TESTDB" )
# Utilice el método cursor() para obtener el cursor de operación
cursor = db.
# Utilice el método de ejecución para ejecutar sentencias SQL
cursor.execute("SELECT VERSION()")
# Utilice el fetchone () método Obtener la base de datos.
datos = cursor.fetchone()
imprimir "Versión de la base de datos: %s " % datos
# Cerrar la conexión de la base de datos
db .close()
Al ejecutar el script anterior se generará el siguiente contenido:
Versión de la base de datos: 5.0.45
Crear tabla de base de datos
Si la conexión a la base de datos existe, podemos usar el método ejecutar() para crear una tabla para la base de datos, cree la tabla EMPLEADO de la siguiente manera:
#! /usr/bin/python
# -*- Codificación: UTF-8 -*-
importar MySQLdb
# Abrir conexión a base de datos
db = MySQLdb.connect("localhost", "testuser", "test123", "TESTDB" )
# Utilice el método cursor() para obtener el cursor de operación
cursor = db .cursor()
# Utilice el método ejecutar() para eliminar una tabla existente.
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
# Crear sentencia SQL de tabla
sql = """CREAR TABLA EMPLEADO (
FIRST_NAME CHAR(20) NO NULO,
APELLIDO CHAR(20),
EDAD INT,
SEXO CHAR(1), p> p>
INCOME FLOAT )"""
cursor.execute(sql)
# Cerrar la conexión de la base de datos
# Cerrar la conexión de la base de datos
db .close()
Operación de inserción de base de datos
El siguiente ejemplo inserta registros en la tabla EMPLOYEE utilizando la instrucción SQL INSERT:
#! /usr/bin/python
# -*- Codificación: UTF-8 -*-
importar MySQLdb
# Abrir una conexión de base de datos
db = MySQLdb.connect("localhost", "testuser", "test123", "TESTDB" )
# Utilice el método cursor() para obtener el cursor de operación
cursor = db.execute(sql)
# Enviar a la base de datos para su ejecución
db.commit()
excepto:
# Revertir cuando se produce un error
db.rollback()
# Cerrar la conexión de la base de datos
db.close ()
El ejemplo anterior puede también se escribirá de la siguiente manera:
#! /usr/bin/python
# -*- Codificación: UTF-8 -*-
importar MySQLdb
# Abrir una conexión de base de datos
db = MySQLdb.connect("localhost", "testuser", "test123", "TESTDB" )
# Utilice el método cursor() para obtener el cursor de operación
cursor = db.cursor()
# instrucción de inserción SQL
sql = "INSERTAR EN EL EMPLEADO(PRIMER_NOMBRE, \
APELLIDO, EDAD, SEXO, INGRESOS) \
VALUES ('%s', '%s', '%d', '%c', '%d' )"
# Usar el método cursor() para obtener Manipular el cursor.
%\
('Mac', 'Mohan', 20, 'M', 2000)
intenta:
# Ejecutar instrucción SQL
cursor.execute(sql)
#Enviar a la base de datos para su ejecución
db.commit()
excepto:
# Revertir en caso de error
db.commit()
()
()
()rollback()
# Cerrar la conexión de la base de datos
db.close()
Ejemplo:
El siguiente código utiliza variables para pasar parámetros a la declaración SQL:
.................................
user_id = "prueba123 "
contraseña = "contraseña"
con.execute('insertar en valores de inicio de sesión("%s", "%s")' %\
(id_usuario, contraseña))
................................
Operación de consulta de base de datos
Python consulta Mysql usando el método fetchone() para obtener un solo dato y 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 devueltas.
rowcount: Esta es una propiedad de solo lectura que devuelve el número de filas afectadas por la ejecución del método ejecutar().
Ejemplo:
Consultar todos los datos de la tabla EMPLEADO cuyo campo salario sea mayor que 1000:
#! /usr/bin/python
# -*- Codificación: UTF-8 -*-
importar MySQLdb
# Abrir una conexión de base de datos
db = MySQLdb.connect("localhost", "testuser", "test123", "TESTDB" )
# Utilice el método cursor() para obtener el cursor de operación
cursor = db.cursor()
# Declaración de consulta SQL
sql = "SELECCIONAR * DEL EMPLEADO \
DÓNDE INGRESOS > '%d'" % ( 1000)
intenta:
#Ejecutar sentencia SQL
cursor.execute(sql)
#Obtener una lista de todos los registros
p>
resultados = cursor.
para 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,age=%d,sex=%s,ingresos=%d" %\
(fname, lname, edad, sexo, ingresos)
excepto:
imprimir "Error: no se pueden recuperar datos"
# Cerrar conexión de base de datos
db .close()
p>
Los resultados de la ejecución del script anterior son los siguientes:
fname=Mac, lname=Mohan, age=20, sex=M, ingresos=2000
Operación de actualización de la base de datos
p>Las operaciones de actualización se utilizan para actualizar datos en la tabla de datos.
El siguiente ejemplo cambia todos los campos SEXO en la tabla TESTDB a "M" e incrementa el campo EDAD en 1:
#! /usr/bin/python
# -*- Codificación: UTF-8 -*-
importar MySQLdb
# Abrir una conexión de base de datos
db = MySQLdb.connect("localhost", "testuser", "test123", "TESTDB" )
# Utilice el método cursor() para obtener el cursor de operación
cursor = db.cursor()
# Declaración de actualización de SQL
sql = "ACTUALIZAR EMPLEADO CONJUNTO EDAD = EDAD + 1
DONDE SEXO = '%c' " % ('M')
prueba:
# Ejecutar instrucción SQL
cursor.execute(sql)
# Enviar a Ejecución de la base de datos
db.commit()
excepto:
# Revertir cuando ocurre un error
db.rollback() p> p>
# 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 los datos en la tabla de datos. El siguiente ejemplo demuestra cómo eliminar todos los datos cuya edad sea mayor a 20 años en la tabla de datos EMPLEADO:
#! /usr/bin/python
# -*- Codificación: UTF-8 -*-
importar MySQLdb
# Abrir una conexión de base de datos
db = MySQLdb.connect("localhost", "testuser", "test123", "TESTDB" )
# Utilice el método cursor() para obtener el cursor de operación
cursor = db.cursor()
# Declaración de eliminación de SQL
sql = "ELIMINAR DEL EMPLEADO DONDE EDAD > '%d' " % (20)
intente:
# Ejecutar instrucción SQL
cursor.execute(sql)
# Confirmar cambios
db.commit() p>
excepto:
# Revertir en caso de error
db.rollback()
# Cerrar conexión
db .close ()
Ejecutar transacciones
El mecanismo de transacción garantiza la coherencia de los datos.
Las transacciones deben tener cuatro propiedades: atomicidad, consistencia, aislamiento y durabilidad. Estas cuatro propiedades a menudo se denominan propiedades ÁCIDAS.
Atómica. Una transacción es una unidad integral de trabajo en la que todas las operaciones incluidas en la transacción están completas o incompletas.
Consistencia. Las transacciones deben mover la base de datos de un estado de coherencia a otro. La consistencia está estrechamente relacionada con la atomicidad.
Aislamiento. La ejecución de una transacción no puede verse interferida por otras transacciones. Es decir, las operaciones y los datos utilizados en la transacción están aislados de otras transacciones concurrentes y las transacciones que se ejecutan al mismo tiempo no interfieren entre sí.
Persistencia (durabilidad). La durabilidad, también conocida como permanencia, se refiere al hecho de 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 tendrán ningún impacto sobre el mismo.
Python DB API 2.0 proporciona dos métodos para transacciones: confirmar o revertir.