28.06.2017 Views

Python para todos

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: 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: se trata de un entero de 0 a 3 que describe lo seguro<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 />

•<br />

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

ɣ ɣ qmark: interrogaciones.<br />

ɣ ɣ<br />

ɣ ɣ<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!