Para conectarnos a la base de datos y ejecutar cualquier consulta, el procedimiento consiste en:
- Abrir la conexión y crear un puntero
- Ejecutar la consulta
- Traer los resultados (si de una selección se trata) o hacer efectiva la escritura (cuando se inserta, actualiza o eliminan datos)
- Cerrar el puntero y la conexión
Nota Los resultados de una consulta de selección, se reciben en una tupla, cuyos elementos, son otras tuplas, conteniendo el valor de cada campo seleccionado de la tabla, en el orden que han sido seleccionados.
12.2.1. Una forma simple de acceder a bases de datos
import MySQLdb
DB_HOST = 'localhost'
DB_USER = 'root'
DB_PASS = 'mysqlroot'
DB_NAME = 'a'
def run_query(query=''):
datos = [DB_HOST, DB_USER, DB_PASS, DB_NAME]
conn = MySQLdb.connect(*datos) # Conectar a la base de datos
cursor = conn.cursor() # Crear un cursor
cursor.execute(query) # Ejecutar una consulta
if query.upper().startswith('SELECT'):
data = cursor.fetchall() # Traer los resultados de un select
else:
conn.commit() # Hacer efectiva la escritura de datos
data = None
cursor.close() # Cerrar el cursor
conn.close() # Cerrar la conexión
return data
12.2.1.1. Insertar datos
dato = raw_input("Dato: ")
query = "INSERT INTO b (b2) VALUES ('%s')" % dato
run_query(query)
12.2.1.2. Seleccionar todos los registros
query = "SELECT b1, b2 FROM b ORDER BY b2 DESC"
result = run_query(query)
print result
12.2.1.3. Seleccionar solo registros coincidentes
criterio = raw_input("Ingrese criterio de búsqueda: ")
query = "SELECT b1, b2 FROM b WHERE b2 = '%s'" % criterio
result = run_query(query)
print result
12.2.1.4. Eliminar registros
criterio = raw_input("Ingrese criterio p7 eliminar coincidencias: ")
query = "DELETE FROM b WHERE b2 = '%s'" % criterio
run_query(query)
12.2.1.5. Actualizar datos
b1 = raw_input("ID: ")
b2 = raw_input("Nuevo valor: ")
query = "UPDATE b SET b2='%s' WHERE b1 = %i" % (b2, int(b1))
run_query(query)
Copyright (c) 2011-2013 Eugenia Bahit.
La copia y redistribución de esta página se permite bajo los términos
de la licencia Creative Commons Atribución NoComercial SinDerivadas
3.0 Unported siempre que se conserve esta nota de copyright.