Python y SQLite Por Rafael Hernampérez Martín

Documentos relacionados
Instalación y Configuración de MySQL

//Sección de manejo de excepciones. Las rutinas de manejo de errores //aparecen aqui

MongoDB Up & Running

Guía de instalación de CAM EXPRESS 8.5 Para Windows XP

SUBPROGRAMAS PL/SQL César Martínez C. Profesor Instructor de Base de Datos Sede Puente Alto DUOC

1. Lenguaje de Definición de Datos. 2. Lenguaje de Manipulación de. Datos. M. C. Gustavo Alfonso Gutiérrez Carreón

El Sistema Gestor de Base de Datos (DBMS)

Ubuntu Server HOW TO : DHCP

ACCEDER A BITÁCORA DE TRABAJO SQL SERVER

MANUAL DE PROGRAMACIÓN PARA BASES DE DATOS 1.0 MySQL

Aplicaciones de Bases de Datos con Delphi - II

Data Bases 2. La sintaxis precisa de esta función es: mysql_pconnect (nombre del servidor, el usuario de la base de datos, password ) ;

Asignatura: Administración de Bases de Datos

CURSORES EN SQL SERVER

DISPARADORES EN SQL DISPARADORES EN SQL:1999 SINTAXIS GENERAL DE UN DISPARADOR EN SQL:1999 SINTAXIS GENERAL DE UN DISPARADOR EN SQL:1999

GESTORES GESTORES DE BASES DE DATOS

Selección de registros de una base de datos

Manual de instalación y actualización de la aplicación Sigma

ÍNDICE INTRODUCCIÓN...17

Computación Aplicada. Universidad de Las Américas. Aula virtual de Computación Aplicada. Módulo de Excel 2013 LIBRO 3

Bases de Datos DB API

$0 Representa al parámetro cero o nombre del programa $1 Representa al parámetro uno $2 Representa al parámetro dos

SQLModificaciones a la BD

La última versión disponible cuando se redactó este manual era la 5 Beta (versión ), y sobre ella versa este manual.

Fundamentos de Oracle

Sistema Operativo Linux

Desarrollo de aplicaciones de acceso a base de datos con JBuilder 7

LENGUAJE DE CONSULTA ESTRUCTURADO (SQL)

Gestión de la Información Práctica 1

Noticias RED Remisión electrónica de documentos

Compresión de ficheros

Instructivo Configuración de Máquinas Fiscales

Uso de Disparadores. Miguel Angel Garduño Cordova Isaac Méndez Hernández

Integridad Referencial. Restricciones (constraints)

Sincronizador de Información Táctica

ÍNDICE. Introducción... XVII. Capítulo 1. Oracle 10g y el Grid Computing... 1

ServiceTonic. Guía de instalación

1 Objetivo. Diseño de Interfaces Hombre Máquina. Práctica 6 Acceso a bases de datos

Sistemas de Bases de Datos II ITS / ITSB EMT CETP

Manejo de Bases de Datos Mysql en Lenguaje C

También se puede hacer una captura de la pantalla de la MV, para ello pulsamos sobre el menú Ver -> Tomar captura de pantalla...

Unidad 5. Tablas. La celda que se encuentra en la fila 1 columna 2 tiene el siguiente contenido: 2º Celda

MICROSOFT ACCESS 2007 (COMPLETO)

VECTORES EN EL PLANO CON DERIVE

RECEPCIÓN DE FICHEROS DE NACIMIENTOS Y DEFUNCIONES

Manual de Instrucciones Definición de Componentes y Registro de Notas Parciales

MICROSOFT EXCEL 2010

Sesión No. 10. Contextualización INFORMÁTICA 1. Nombre: Gestor de Base de Datos (Access)

Microsoft Excel 2003 (Completo)

Microsoft Excel 2003 (Completo)

Información de Cubos Analysis Services. Analysis Services

Equipamiento ADSL» Inalámbrico. Adaptador USB PAUTAS PARA LA VERIFICACION TCP/IP

ACCESS XP. Objetivos. Duración. 64 horas. Contenidos. Módulo 1: Introducción. Parte 1 Bienvenida Certificado MOUS Resumen

Grandes volúmenes de datos Plan de ejecución. bases de datos

Microsoft SQL Server 2005

UNIDAD 4. MODIFICAR TABLAS DE DATOS

11.2. Manual de GTC 2.0: El primer contacto

Ubuntu Server HOW TO : SERVIDOR DE IMPRESORAS

MANUAL DE INSTALACIÓN SIGGA LABORAL VERSION EVALUATIVA

Manual del Integrador Contable Premium Soft

MICROSOFT EXCEL 2013 (COMPLETO)

Interacción con el Servidor Oracle8. Copyright Oracle Corporation, All rights reserved.

GUÍA EXCEL CONCEPTOS VERSIÓN 1 CÓDIGO: EC/001 VIRTUALIZACION FORMACION POR PROYECTOS

Creación de una Base de datos

El Lenguaje PL/SQL. Un lenguaje de propósito general orientado a la inclusión de sentencias SQL. Estructura del código PL/SQL.

CONFIGURACIÓN DEL ENLACE DE INTOUCH DESDE UN PC CON WINDOWS XP CON PROFIBÚS MEDIANTE LA TARJETA CP5613.

Microsoft Visual Studio está basado en.net framework. Definiciones de.net Framework:

Aplicativos: Cómo se realiza la descarga e instalación de Aplicativos AFIP?

Guía de integración del módulo PayNoPain en Prestashop

MALTED: MANUAL DE INSTALACIÓN EN LINUX

RECIBOS. Cti19_14 C.T.I. Cálculo y Tratamiento de la Información

Procesos Fin de Ejercicio Contabilidad

Para realizar los procesos de cierre y apertura del ejercicio es conveniente disponer de la última versión de la aplicación es decir la V

MINISTERIO DE SALUD Y PROTECCIÓN SOCIAL BOGOTÁ, AGOSTO DE 2015

EXCEL I UNIDAD 1 EMPEZANDO A TRABAJAR CON EXCEL (SEMANA 1)

Instalación de Oracle Linux 5u8

Figura 17 Barra de iconos

INGENIERÍA TELEINFORMÁTICA

Microsoft Virtual Academy

Introducción al SQL de InterBase: DDL y DML

Excel 2013 Completo. Duración: Objetivos: Contenido: 80 horas

Base de Datos Conjunto de información organizada especialmente para búsqueda y entrada de datos. Base de Datos: Ejemplo Usuarios

MANUAL APLICACIÓN RESTAURANTMENU MOVIL Y ESCRITORIO

Objetivos y Temario CURSO MySQL 5

DIDACTIFICACION DE IPv CONFIGURACIÓN MANUAL

Tema 3. Aplicaciones de Tipo Consola

Jornadas sobre Gnu/Linex: Uso de Software Libre en las Administraciones públicas. Sonia Pizarro Redondo

INSTALACIÓN Y VERIFICACIÓN DE LA TARJETA CRIPTOGRÁFICA

Taller de TeamViewer. Manual De TeamViewer

Concepto de vista. (con ciertas limitaciones). nivel físico) Una vista es una tabla virtual (no tiene una correspondencia a

Compartir datos anónimos con Lenovo. Contenido. Harmony

Subtitular Vídeos José Luis Fernández. I.E.S. Leiras Pulpeiro

Maestría en Bioinformática. Bases de Datos y Sistemas de Información SQL: DML. Ing. Alfonso Vicente, PMP

Computación Aplicada. Universidad de Las Américas. Aula virtual de Computación Aplicada. Módulo de Excel 2013 LIBRO 11

INFORMÁTICA Y COMUNICACIONES

UNIVERSIDAD TECNOLÓGICA NACIONAL FACULTAD REGIONAL CÓRDOBA INGENIERÍA EN SISTEMAS DE INFORMACIÓN PROYECTO FINAL

Tema 7. Más allá de VideoPoint.

EJERCICIO 26 DE EXCEL

Administración de la producción. Sesión 12: Editor de Publicaciones (Microsoft Punlisher)

Control de Accesos SisMod

Transcripción:

Python y SQLite Por Rafael Hernampérez Martín En el presente post vamos a aprender los conceptos básicos para desarrollar código en Python utilizando la base de datos SQLite. Se presupone que el lector conoce los conceptos básicos de Python y de SQL, y que ya tiene instalado en su máquina tanto el intérprete de Python como SQLite. Librería pysqlite Lo primero que debemos hacer es descargar e instalar la librería pysqlite desde su página web: http://code.google.com/p/pysqlite/ En el caso de tener Windows, descargamos un archivo ejecutable (.exe) y lo ejecutamos, instalándolo como cualquier aplicación Windows. En el caso de tener Linux, descargamos el archivo comprimido (.tar.gz), y lo descomprimimos. Una vez descomprimido, instalamos la librería mediante el siguiente comando: $ python setup.py build $ python setup.py install Conexión a la base de datos Para realizar una conexión a una base de datos SQLite, ésta debe estar arrancada: $ sqlite3 mibasedatos.bbdd Para realizar una conexión a una base de datos, importar la librería: A continuación se establece la conexión indicando el archivo de base de datos: con = sqlite.connect('mibasedatos.bbdd') Consultas de datos Para todas las operaciones con la base de datos, hay que crear un cursor a partir de la conexión: A partir del cursor, se pueden ejecutar las operaciones que se requieran, como la consulta de datos:

cur.execute('select campo from tabla') Al ejecutar la consulta, el cursor apunta antes del primer registro o fila. Los siguientes comandos avanzan hasta el siguiente registro: cur.next() # Avance cur.fetchone() # Avance y recupera registro Para obtener de una vez todos los registros del cursor: cur.execute('select * from tabla') result = cur.fetchall() En la variable result se almacenará una lista o secuencia de tuplas, cada una de las cuales corresponde a un registro, y el valor de cada uno de los campos se encuentra separado por comas: print result [(0, u'valor1', 87), (1, u'valor2', 32), (2, u'valor3', 38)] En este ejemplo, el resultado da 3 registros con tres columnas o campos, de los cuales, el primero y el último son numéricos, y el segundo es alfanumérico. print result[1] # registro 2 (1, u'valor2', 32) print result[2][1] # campo 2 del registro 3 valor3 Recorrer el resultado resulta muy sencillo, utilizando un iterador sobre la secuencia: cursor = con.cursor() cursor.execute('select id, nombre, nick, password, rol FROM usuarios') for fila in cursor: print 'id:', fila[0] print 'Nombre:', fila[1] print 'Nick:', fila[2] print 'Password:', fila[3] print 'Rol:', fila[4] print '*'*30

Actualizaciones Por actualización se entiende toda aquella operación que realiza algún cambio, lo que implica algún tipo de escritura. Existen varios tipos de escritura o modificaciones en la base de datos. El primero afectaría únicamente a los datos de las tablas, lo que se consigue mediante las sentencias UPDATE, INSERT y DELETE de SQL. Otro afectaría a la estructura de la base de datos, pudiendo crear, modificar o eliminar tablas o índices. Actualización de datos en tablas Para todas ellas, se utilizará un cursor y la función execute(), tal y como vimos anteriormente: con = sqlite.connect("ticube.bbdd") cur.execute("insert into tbconfig (parametro, valor, descripcion) values ('PARAM1', '10', 'Parametro 1')") cur.lastrowid En este ejemplo se inserta un registro en una tabla. La última línea retorna el número de la última fila afectada en el cursor. Si sólo se realizó esta operación de escritura, pero no afecta a ningún registro, no retornará nada. Si todo fue bien, retornará (en este caso) 1. El cursor acumulará operaciones de escritura, a medida que se vayan ejecutando. Pero estas operaciones no se hacen efectivas físicamente en la base de datos. Ello se debe a que se encuentran en una transacción. Una transacción resulta muy útil cuando hay un encadenamiento de operaciones de escritura que tienen dependencias unas de otras. Cuando se completan todas las operaciones de escritura, si no se ha producido ningún tipo de error, se puede procesar toda la transacción indicando a la conexión de la base de datos que perpetre definitivamente la transacción con todas las operaciones realizadas: con.commit() Si se produjera algún error durante la transacción, podrían abortarse todas las operaciones de escritura indicadas en el cursor para evitar inconsistencias de datos. Para ello, una vez se detecte algún error o inconsistencia, se indicaría a la conexión de la base de datos que dé marcha atrás, cancelando todas las operaciones realizadas: con.rollback()

Actualización de la estructura de la BBDD También es posible acceder y modificar la estructura de la base de datos, pudiendo crear nuevas tablas, añadir campos a las tablas existentes, crear o borrar índices, etc. El proceder es idéntico a como hemos visto antes, a través del cursor. El siguiente ejemplo crea una sencilla tabla en nuestra base de datos: cursor.execute("create TABLE configuracion (parametro VARCHAR(30) NOT NULL, valor VARCHAR(30))") A diferencia de la actualización de datos en las tablas, este tipo de actualizaciones se realiza directamente, y no requiere de transacciones. Consultas parametrizadas Imaginemos que se pretende hacer una carga masiva de datos de una tabla. En lugar de tantas sentencias INSERT como conjuntos de valores (cosa inviable si los datos son dinámicos), se pueden recoger éstos de otra consulta o de un fichero, y asignar dichos valores a unas variables y utilizar el valor de éstas en una única sentencia INSERT: con = sqlite.connect("ticube.bbdd") cursor = con.cursor() parametros=['uno','dos', TRES ] valores=['1','2','3'] max=len(parámetros) for i in range(0,max): cursor.execute("insert INTO configuracion (parametro, valor) VALUES (?,?)", (parametros[i], valores[i])) con.commit() En este ejemplo se insertarán 3 registros en la tabla configuración, obtenidos de dos secuencias (parametros y valores). El símbolo? (interrogación), reserva el valor que va a tomar de la lista de parámetros que se especifican a continuación, en el mismo orden en que se enumeran. Esta capacidad se puede aplicar también a otras consultas de actualización (como UPDATE o DELETE) o a consultas de datos (SELECT).

Cerrar siempre SQLite es una base de datos muy versátil, ligera y práctica. Ello se consigue sacrificando una parte esencial en entornos distribuídos: la concurrencia. Así es: SQLite no es concurrente. Por ello, para evitar problemas e inconsistencias por la concurrencia, deberemos siempre cerrar todos los cursores y conexiones una vez han sido utilizados y no los utilicemos en cada módulo. Ello libera la conexión para nuevas operaciones. El método close() se encarga de esta operación: cursor.close() con.close() El orden de apertura y cierre es importante: 1) Abrir conexión 2) Abrir cursor 3) Operaciones 4) 5) Cerrar cursor 6) Cerrar conexión