""" run a query string, display formatted result table example: querydb.py dbase1 "select name, job from people where pay > 50000" """ import sys database, querystr = 'dbase1', 'select * from people' if len(sys.argv) > 1: database = sys.argv[1] if len(sys.argv) > 2: querystr = sys.argv[2] from makedicts import makedicts from dumpdb import showformat from loaddb import login conn, curs = login(database) rows = makedicts(curs, querystr) showformat(rows)
def consultas(): from makedicts import makedicts from dumpdb import showformat from loaddb import login conn, curs = login('Universidad') print "\n\n1.- Obtener los nombres y notas de los estudiantes así como el resultado de su solicitud de \ manera que tengan un valor de corrección menor que 1000 y hayan solicitado la carrera de \ Informática en la Universidad Complutense de Madrid.\n" rows = makedicts(curs, "SELECT nombre_est, nota \ FROM estudiantes, solicitudes \ WHERE estudiantes.id = solicitudes.id \ AND estudiantes.valor < 1000 \ AND solicitudes.carrera = 'Informatica' \ AND solicitudes.nombre_univ = 'Universidad Complutense de Madrid'") showformat(rows) print "\n\nObtener los estudiantes cuya nota ponderada cambia en más de\ un punto respecto a la nota original.\n" rows = makedicts(curs, "SELECT * \ FROM estudiantes \ WHERE estudiantes.nota - (estudiantes.valor * estudiantes.nota / 1000) > 1") showformat(rows) print '\n\nModificar la tabla solicitudes de forma que aquellos estudiantes que no solicitaron ninguna\ universidad, soliciten "Informática" en la "Universidad de Jaen".\n' rows = makedicts(curs, "SELECT id FROM estudiantes WHERE id NOT IN (SELECT id FROM solicitudes)") for row in rows: curs.execute('''INSERT INTO solicitudes VALUES (?, 'Universidad de Jaen', 'Informatica', 'No')''', (row["id"], )) rows = makedicts(curs, "SELECT * FROM solicitudes WHERE nombre_univ = 'Universidad de Jaen'") showformat(rows) print '\n\nAdmitir en la "Universidad de Jaen" a todos los estudiantes de Económicas quienes no \ fueron admitidos en dicha carrera en otras universidades.\n' rows = makedicts(curs, "SELECT id\ FROM solicitudes\ WHERE carrera = 'Economia'\ AND decision = 'No'\ AND nombre_univ != 'Universidad de Jaen'\ AND id NOT IN (SELECT id\ FROM solicitudes\ WHERE carrera = 'Economia'\ AND decision = 'Si')"); for row in rows: curs.execute('''INSERT INTO solicitudes VALUES (?, 'Universidad de Jaen', 'Economia', 'Si')''', (row["id"], )) rows = makedicts(curs, "SELECT * FROM solicitudes WHERE nombre_univ = 'Universidad de Jaen' AND carrera = 'Economia'") showformat(rows) print "\n\nBorrar a todos los estudiantes que solicitaron más de 2 carreras diferentes.\n" rows = makedicts (curs, 'SELECT id,count(DISTINCT carrera) AS c FROM solicitudes GROUP BY id HAVING c>2') for r in rows: curs.execute('DELETE FROM estudiantes WHERE id = ?',(r['id'], )) rows = makedicts(curs, 'SELECT * FROM estudiantes') showformat(rows)