Capa de Abstracción de la Base de Datos (DAL) de web2pyTM
Ejemplos
define_table, insert, count, delete, update
1. | db = DAL('postgres://user:password@hostname/db', pool_size=10) |
Ejemplos de cadenas uri strings para DAL
- sqlite://prueba.db
- mysql://usuario:contraseña@localhost/basededatos
- postgres://usuario:contraseña@localhost/basededatos
- mssql://usuario:contraseña@host/basededatos
- firebird://usuario:contraseña@servidor:3050/basededatos
- oracle://usuario/contraseña@basededatos
Tipos de campos válidos
- Field(nombre, 'string') # cadenas de caracteres
- Field(nombre, 'text') # textos
- Field(nombre, 'password') # contraseñas
- Field(nombre, 'blob') # objetos grandes
- Field(nombre, 'upload') # archivos subidos
- Field(nombre, 'boolean') # verdadero/falso
- Field(nombre, 'integer') # enteros
- Field(nombre, 'double') # números de punto flotante
- Field(nombre, 'time') # horas, minutos y segundos
- Field(nombre, 'date') # fecha
- Field(nombre, 'datetime') # fecha y hora
- Field(nombre, db.referenced_table) # campo referencia a otra tabla (referenced_table)
Atributos de campo válidos
- "
- length (solo para el campo string, por defecto 32)
- default (por defecto None)
- required (por defecto False)
- notnull (por defecto False)
- unique (por defecto False)
- requires (validador o lista de validadores, para formularios)
- comment (para formularios)
- widget (para formularios)
- represent (para formularios)
- readable (para formularios)
- writable (para formularios)
- update (valor predeterminado si el registro se actualiza)
- uploadfield (para campos de subidas)
- authorize (para campos de subidas, función para ser usada si los datos son descargados, ver autenticación)
- autodelete (para campos de subidas, si se establece a True las imágenes subidas se eliminan al borrar el registro (para formularios)
Seleccionar atributos
1. | filas = db(consulta).select(*campos, orderby=..., left=..., groupby=..., having=..., limitby=..., cache=...) |
Atajos
1. | db['persona'] ### db.persona |
Truncar y bajar (eliminar) una tabla
1. | db.persona.truncate() |
Juntas por campos referenciados (Inner joins)
1. | db.define_table('perro',Field('nombre')) |
Juntas externas izquierdas (Left Outer Joins)
1. | consulta=(db.persona.id>0) |
Consultas complejas
1. | consulta = (db.persona.id==1)|((db.persona.id==2)&(db.persona.nombre=='Max')) |
Selecciones anidadas (subselect)
1. | consulta = db.persona.id.belongs(db()._select(db.amistad.persona) |
Agregados
1. | fila=db(amigos).select(db.persona.nombre,db.perro.id.count(),groupby=db.perro.id) |
Alias
1. | persona=db.persona |
Caching
1. | rows=db().select(db.person.ALL,cache=(cache.ram,3600)) |
Entrada CSV
1. | db.persona.import_from_csv_file(open(nombredearchivo,'rb')) |
Salida CSV
1. | strfilas) |
Salida HTML
1. | print filas.xml() |
Validadores de campos de conjuntos
1. | db.persona.nombre.requires=IS_NOT_IN_DB(db,db.persona.nombre) # requiere que el nombre no este previamente en la base de datos |
Crea y procesa un formulario desde un modelo
1. | form = SQLFORM(db.amistad) |
1. | {{=form}} |