23.11.2012 Views

Python para todos

Python para todos

Python para todos

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Python</strong> <strong>para</strong> <strong>todos</strong><br />

A lo largo de este capítulo utilizaremos la base de datos SQLite <strong>para</strong><br />

los ejemplos, ya que no se necesita instalar y ejecutar un proceso servidor<br />

independiente con el que se comunique el programa, sino que se<br />

trata de una pequeña librería en C que se integra con la aplicación y<br />

que viene incluida con <strong>Python</strong> por defecto desde la versión 2.5. Desde<br />

la misma versión <strong>Python</strong> también incorpora un módulo compatible<br />

con esta base de datos que sigue la especificación de DB API 2.0:<br />

sqlite3, por lo que no necesitaremos ningún tipo de configuración<br />

extra.<br />

Nada impide al lector, no obstante, instalar y utilizar cualquier otra<br />

base de datos, como MySQL, con la cuál podemos trabajar a través<br />

del driver compatible con DB API 2.0 MySQLdb (http://mysql-python.<br />

sourceforge.net/).<br />

Variables globales<br />

Antes de comenzar a trabajar con sqlite3, vamos a consultar algunos<br />

datos interesantes sobre el módulo. Todos los drivers compatibles con<br />

DB-API 2.0 deben tener 3 variables globales que los describen. A<br />

saber:<br />

• apilevel:<br />

una cadena con la versión de DB API que utiliza. Actualmente<br />

sólo puede tomar como valor “1.0” o “2.0”. Si la variable<br />

no existe se asume que es 1.0.<br />

• threadsafety:<br />

se trata de un entero de 0 a 3 que describe lo seguro<br />

•<br />

que es el módulo <strong>para</strong> el uso con threads. Si es 0 no se puede compartir<br />

el módulo entre threads sin utilizar algún tipo de mecanismo<br />

de sincronización; si es 1, pueden compartir el módulo pero no<br />

las conexiones; si es 2, módulos y conexiones pero no cursores y,<br />

por último, si es 3, es totalmente thread-safe.<br />

<strong>para</strong>mstyle: informa sobre la sintaxis a utilizar <strong>para</strong> insertar valores<br />

en la consulta SQL de forma dinámica.<br />

ɣ qmark:<br />

interrogaciones.<br />

sql = “select all from t where valor=?”<br />

ɣ numeric:<br />

un número indicando la posición.<br />

sql = “select all from t where valor=:1”<br />

ɣ named:<br />

el nombre del valor.<br />

118

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!