Package pyUPVBib :: Module pyPgGas :: Class ConsultasPg
[hide private]
[frames] | no frames]

Class ConsultasPg

source code

object --+
         |
        ConsultasPg

Inserta y recupera datos de postgres. Puede recuperar e insertar campos con geometría o datos binarios de imagenes. de campos bytea

Tiene una propiedad, denominada consulta que devuelve la cosulta efectuada

Instance Methods [hide private]
 
__init__(self, oConectaPg)
Constructor
source code
 
__set_oConectaPg(self, oConectaPg) source code
 
__get_oConectaPg(self) source code
 
__get_oGeneraExpresionesPsycopg2(self) source code
 
insertaDatosTablaBytea(self, nombreTabla, listaCampos, listaValores, nombreCampoBytea)
Inserta un registro en una tabla con un campo bytea
source code
 
insertaDatosTablaGeom(self, nombreTabla, listaCampos, listaValores, esMulti, nombreCampoGeom, epsg)
Inserta un registro en una tabla con un campo de geometria
source code
 
insertaDatos(self, nombreTabla, listaCampos, listaValores, nombreCampoBytea=None, esMulti=False, nombreCampoGeom=None, epsg=None, returning=None)
Inserta un registro en una tabla.
source code
 
insertaDatosDic(self, nombreTabla, dicValores, nombreCampoBytea=None, esMulti=False, nombreCampoGeom=None, epsg=None, returning=None)
Es igual que insertaDatos, solo que, en vez de recibir dos listas, una con los nombres de los campos y otra con los nombres de los valores, recibe un diccionario campo:valor
source code
 
updateDatos(self, nombreTabla, listaCampos, listaValores, nombreCampoBytea=None, esMulti=False, nombreCampoGeom=None, epsg=None, condicionWhere=None, listaValoresCondWhere=None, returning=None)
Actualiza un registro en una tabla.
source code
 
deleteDatos(self, nombreTabla, dicCondWhere=None)
Borra los registros de una tabla que coinciden con todos los valores de campo de dicCondWhere.
source code
 
insertaArchivoPG(self, nombreTabla, nombreCampo, datosBinarios)
Inserta un archivo en postgres
source code
 
recuperaDatosTablaBytea(self, nombreTabla, listaCampos, condicionWhere=None, listaValoresCondWhere=None, bytea_output_to_escape=False, orderBy=None, limit=None)
Recupera el contenido de una tabla, tenga o no, un campo bytea de postgres
source code
 
recuperaDatosTablaByteaDic(self, nombreTabla, listaCampos, condicionWhere=None, listaValoresCondWhere=None, bytea_output_to_escape=False, orderBy=None, limit=None)
La documentacion es la misma que la del metodo recuperaDatosTablaBytea.
source code
 
sacaNombreTablasEsquema_cursor(self, esquema)
Devuelve un cursor con los nombres de las tablas de un esquema.
source code
 
sacaNombreTablasEsquema_lista(self, esquema, anteponerEsquema=False)
Devuelve una lista con los nombres de las tablas de un esquema.
source code
 
sacaNombresCamposTabla_cursor(self, esquema, nomTabla)
Devuelve un cursor con los nombres de los campos de una tabla.
source code
 
sacaNombresCamposTabla_lista(self, esquema, nomTabla)
Devuelve una lista con los nombres de los campos de una tabla.
source code
 
mueveRegistros(self, tablaOrigen, tablaDestino, listaCamposCopiar, listaCamposNoCopiar=None, dicCondWhere={}, puedenSerVarios=False, puedenSerCero=False, dicValoresCambiar=None, dicValoresAdd=None, borrarOrigen=False, listaCamposReturning=None)
Copia registros de tablaOrigen a tablaDestino.
source code
 
creaUsuario(self, nombreUsuarioUnicode, passwordUnicode)
Crea un usuario postgres a partir del nombre y el password Nombre usuario y password deben estar en Unicode
source code
 
borraUsuario(self, nombreUsuarioUnicode)
Borra un usuario de postgres.
source code
 
addUsuarioAGrupo(self, nombreUsuarioUnicode, grupoUnicode)
Añade un usuario a un grupo de postgres
source code
 
deleteUsuarioDeGrupo(self, nombreUsuarioUnicode, grupoUnicode)
Borra un usuario de un grupo de postgres
source code
 
toUtf8(self, mens) source code
 
sacaNombresCamposTabla_lista2(self, nomTablaCompleto)
Devuelve una lista con los nombres de los campos de una tabla.
source code
 
__get_consulta(self) source code

Inherited from object: __delattr__, __format__, __getattribute__, __hash__, __new__, __reduce__, __reduce_ex__, __repr__, __setattr__, __sizeof__, __str__, __subclasshook__

Properties [hide private]
  consulta
  oConectaPg
  oGeneraExpresionesPsycopg2

Inherited from object: __class__

Method Details [hide private]

__init__(self, oConectaPg)
(Constructor)

source code 

Constructor

Parameters:
  • oConectaPg (una instancia de la clase conectaPg) - una instancia de la clase conectaPg
Overrides: object.__init__

insertaDatosTablaBytea(self, nombreTabla, listaCampos, listaValores, nombreCampoBytea)

source code 

Inserta un registro en una tabla con un campo bytea

Parameters:
  • nombreTabla (string) - Nombre de la tabla. ej1:"imagenes" ej2: "esquemaPG.imagenes".
  • listaCampos (string) - Lista con los nombres de los campos. Ej [nombre, direccion, img]. El último nombre en la lista debe ser el del campo bytea
  • listaValores (lista) - Lista con los valores de los campos. El último valor debe ser la variable de los datos binarios a almacenar en el campo Bytea. Es lo que devuelve el método leeDatBinarios.
Returns:
True si se ha realizado. Exception si no se ha podido realizar.

insertaDatosTablaGeom(self, nombreTabla, listaCampos, listaValores, esMulti, nombreCampoGeom, epsg)

source code 

Inserta un registro en una tabla con un campo de geometria

Parameters:
  • nombreTabla (string) - Nombre de la tabla. ej1:"imagenes" ej2: "esquemaPG.imagenes".
  • listaCampos (string) - Lista con los nombres de los campos. Ej [nombre, direccion, img]. El último nombre en la lista debe ser el del campo bytea
  • listaValores (lista) - Lista con los valores de los campos. El último valor debe ser la variable de los datos binarios a almacenar en el campo Bytea. Es lo que devuelve el método leeDatBinarios.
  • esMulti (Booleano) - Si es multi, se deja como estaba, si no, se convierte a multi.
  • nombreCampoGeom (srtring) - nombre del campo de geometría. Debe estar incuído en listaCampos.
  • epsg (string) - codigo EPSG de la tabla donde se insertará la geometria
Returns:
True si se ha realizado. Exception si no se ha podido realizar.

insertaDatos(self, nombreTabla, listaCampos, listaValores, nombreCampoBytea=None, esMulti=False, nombreCampoGeom=None, epsg=None, returning=None)

source code 

Inserta un registro en una tabla. La tabla puede contener un campo bytea, para almacenar archivos o un campo de geometría, o ambos.

El valor del campo Bytea es lo que devuelve el método leeDatBinarios de la clase Archivos. El valor del campo de geometrái debe ser como el ejemlo que sigue:

  • 'POLYGON((716929.025919 4350081.309705,716981.909594 4350174.233877,...,716929.025919 4350081.309705))'
  • se obtiene con el método exportToWkt() de la clase qgsGeometry de QGis
    • seleccion = layer.selectedFeatures()
    • for objeto in seleccion:
      • geom=objeto.geometry()
      • geomT=str(geom.exportToWkt())

Si returning es una lista de campos, puede devolver los valores insertados en la tabla para esos campos. Estos valores se pueden recuperar con cursor.fetchall()

Parameters:
  • nombreTabla (string) - Nombre de la tabla. ej1:"imagenes" ej2: "esquemaPG.imagenes".
  • listaCampos (string) - Lista con los nombres de los campos, incluídos, en su caso, el nombre del campo de geometría, y el nombre del campo bytea . Ej [nombre, direccion, img, geom].
  • listaValores (lista) - Lista con los valores de los campos. El campo Bytea es lo que devuelve el método leeDatBinarios de la clase Archivos.
  • esMulti (Booleano) - Si es multi, se deja como estaba, si no, se convierte a multi.
  • nombreCampoGeom (srtring) - nombre del campo de geometría. Debe estar incuído en listaCampos.
  • epsg (string) - codigo EPSG de la tabla donde se insertará la geometria
  • returning (lista) - Lista de campos de la insercion a retornar. Se pueden recuperar con cursor.fetchall(), despues de la insercion. Si es None, no retorna nada.
Returns:
True si lo consigue. Una instancia del error en caso contrario.

updateDatos(self, nombreTabla, listaCampos, listaValores, nombreCampoBytea=None, esMulti=False, nombreCampoGeom=None, epsg=None, condicionWhere=None, listaValoresCondWhere=None, returning=None)

source code 

Actualiza un registro en una tabla. La tabla puede contener un campo bytea, para almacenar archivos o un campo de geometría, o ambos. El valor del campo Bytea es lo que devuelve el método leeDatBinarios de la clase Archivos.

El valor del campo de geometria debe ser como el ejemlo que sigue:

  • 'POLYGON((716929.025919 4350081.309705,716981.909594 4350174.233877,...,716929.025919 4350081.309705))'

Se obtiene con el método exportToWkt() de la clase qgsGeometry de QGis

  • seleccion = layer.selectedFeatures()
  • for objeto in seleccion:
  • geom=objeto.geometry()
  • geomT=str(geom.exportToWkt())
Parameters:
  • nombreTabla (string) - Nombre de la tabla. ej1:"imagenes" ej2: "esquemaPG.imagenes".
  • listaCampos (string) - Lista con los nombres de los campos. Ej [nombre, direccion, img]. El último nombre en la lista debe ser el del campo bytea
  • listaValores (lista) - Lista con los valores de los campos. El campo Bytea es lo que devuelve el método leeDatBinarios de la clase Archivos.
  • esMulti (Booleano) - Si es multi, se deja como estaba, si no, se convierte a multi.
  • nombreCampoGeom (srtring) - nombre del campo de geometría. Debe estar incuído en listaCampos.
  • epsg (string) - codigo EPSG de la tabla donde se insertará la geometria
  • condicionWhere (string) - condicion que ha de cumplir el registro para ser actualizado. Ejemplo: id=%s and lugar=%s or lugar=%s. Como se ve no hay que poner los valores, hay que poner %s. Esos valores los debe introcir Psycopg2 en cursor.execute(cad,valores) Deben estar en la lista valores. Se hace así por seguridad. pysicopg2 escapa los caracteres correctamente.
  • listaValoresCondWhere (lista) - lista de valores de la condicion Where, que han de sustituir a los %s de la condicion Where.
Returns:
True si lo consigue. Una instancia del error en caso contrario.

deleteDatos(self, nombreTabla, dicCondWhere=None)

source code 

Borra los registros de una tabla que coinciden con todos los valores de campo de dicCondWhere. Si dicCondWhere==None, borra todos los registros de la tabla

Returns:
True si todo va bien, Exception si hay algún problema.

insertaArchivoPG(self, nombreTabla, nombreCampo, datosBinarios)

source code 

Inserta un archivo en postgres

Parameters:
  • nombreTabla (string) - Nombre de la tabla. ej1:"imagenes" ej2: "esquemaPG.imagenes".
  • nombreCampo (string) - Nombre del campo bytea destino".
  • datosBinarios (datos binarios) - datos binarios del archivo. Se pueden obtener con el metodo leeDatBinarios de esta clase.
Returns:
True si se ha realizado. Exception si no se ha podido realizar.

recuperaDatosTablaBytea(self, nombreTabla, listaCampos, condicionWhere=None, listaValoresCondWhere=None, bytea_output_to_escape=False, orderBy=None, limit=None)

source code 

Recupera el contenido de una tabla, tenga o no, un campo bytea de postgres

Parameters:
  • nombreTabla (string) - Nombre de la tabla. ej1:"imagenes" ej2: "esquemaPG.imagenes".
  • listaCampos (Lista de strings) - Lista de strings con los nombres de los campos a recuperar. Ej: ["id", "nombre", "img"]
  • condicionWhere (string) - condicion que ha de cumplir el registro para ser actualizado. Ejemplo: id=%s and lugar=%s or lugar=%s. Como se ve no hay que poner los valores, hay que poner %s. Esos valores los debe introcir Psycopg2 en cursor.execute(cad,valores) Deben estar en la lista valores. Se hace así por seguridad. pysicopg2 escapa los caracteres correctamente.
  • listaValoresCondWhere (lista) - lista de valores de la condicion Where, que han de sustituir a los %s de la condicion Where.
  • bytea_output_to_escape (boolean) - Si es True, ejecuta cur.execute("SET bytea_output TO escape;"), necesario para postgres 9.0 o posterior con psycopg2 versiones anteriores a la 2.4.1. Si no no recupera bien los campos bytea. A partir de la version 2.4.1 ya no hace falta esta linea.
Returns:
Una referencia al cursor que contiene las filas seleccionadas. Exception si no se ha podido realizar.

recuperaDatosTablaByteaDic(self, nombreTabla, listaCampos, condicionWhere=None, listaValoresCondWhere=None, bytea_output_to_escape=False, orderBy=None, limit=None)

source code 

La documentacion es la misma que la del metodo recuperaDatosTablaBytea. La diferencia es que este metodo no devuelve un cursor, si no una lista con todas las filas seleccionadas. Cada elemento de la lista es un diccionario {nombre_campo:valor,nombre_campo:valor,....} Si un valor de campo no tiene valor, el valor para el campo en el diccionario es None.

Returns:
Una lista de diccionarios. Un diccionario por fila seleccionada. Si no hay selección, la lista estará vacía. Exception si hay error.

sacaNombreTablasEsquema_cursor(self, esquema)

source code 

Devuelve un cursor con los nombres de las tablas de un esquema.

Saber las tablas de un schema. pg_tables es una vista

  • SELECT tablename FROM pg_tables WHERE schemaname = 'public'
Parameters:
  • esquema (string) - Nombre del esquema
Returns:
Una referencia al cursor que contiene las filas seleccionadas. Exception si no se ha podido realizar.

sacaNombreTablasEsquema_lista(self, esquema, anteponerEsquema=False)

source code 

Devuelve una lista con los nombres de las tablas de un esquema.

Parameters:
  • esquema (string) - Nombre del esquema
Returns:
Una lista que contiene las filas seleccionadas. Exception si no se ha podido realizar.

sacaNombresCamposTabla_cursor(self, esquema, nomTabla)

source code 

Devuelve un cursor con los nombres de los campos de una tabla.

Parameters:
  • esquema (string) - nombre del esquema que contiene la tabla. Ejemplo "h30"
  • nomTabla (string) - nombre de la tabla. Ejemplo "linde"
Returns:
Una referencia al cursor que contiene las filas seleccionadas. Exception si no se ha podido realizar.

saber las columnas de una tabla: SELECT column_name FROM information_schema.columns WHERE table_schema='h30' and table_name = 'linde';

sacaNombresCamposTabla_lista(self, esquema, nomTabla)

source code 

Devuelve una lista con los nombres de los campos de una tabla.

Parameters:
  • esquema (string) - nombre del esquema que contiene la tabla. Ejemplo "h30"
  • nomTabla (string) - nombre de la tabla. Ejemplo "linde"
Returns:
una lista con los nombres de los campos. Exception si hay error

mueveRegistros(self, tablaOrigen, tablaDestino, listaCamposCopiar, listaCamposNoCopiar=None, dicCondWhere={}, puedenSerVarios=False, puedenSerCero=False, dicValoresCambiar=None, dicValoresAdd=None, borrarOrigen=False, listaCamposReturning=None)

source code 

Copia registros de tablaOrigen a tablaDestino.

Parameters:
  • tablaOrigen (string) - nombre completo de la tabla origen.
  • tablaDestino (string) - nombre completo de la tabla destino.
  • listaCamposCopiar (lista, o string) - lista con los campos a copiar de una tabla a otra. Si se pasa "todos", se extraen todos los nombres de campos de la tabla.
  • listaCamposNoCopiar (lista) - Lista con los campos a eliminar de la lista listaCamposCopiar. Está pensado para cuando listaCamposCopiar sea "todos", pero que haya que eliminar algún campo, por ejemplo el id, o gid. Este campo debe ser serial primary key, y lo debe asignar la BDA.
  • dicCondWhere (diccionario) - diccionario nombreCampo:condición a cumplir para ser seleccionado Deben estar en la lista valores. Se hace así por seguridad. pysicopg2 escapa los caracteres correctamente.
  • puedenSerVarios (booleano) - Si es false y resultan varios registros seleccionados de la tabla origen, se genera un error.
  • puedenSerCero (booleano) - Si es false y resultan cero registros seleccionados de la tabla origen, se genera un error.
  • dicValoresCambiar (diccionario) - diccionario nombreCampo: valor. Se puede utilizar para cambiar algún valor de la tabla destino, es decir, la tabla destino tendrá, en los campos indicados los valores de este diccionario, no los de la tabla origen.
  • borrarOrigen (booleano) - Si es True, se borran todos los registros seleccionados en la tabla origen.
  • listaCamposReturning (lista) - si no es None, se devuelve un diccionario con los valores de los campos indicados. Estos valores son devueltos por el servidor, después de insertar el registro.
Returns:
Un diccionario con los campos especificados en listaCamposReturning. Un diccionario vacío, si listaCamposReturning es None.
Raises:
  • Exception - Si, de la selección, resultan varios registros y debe ser uno. Si la selección o la inserción generan algún error.

creaUsuario(self, nombreUsuarioUnicode, passwordUnicode)

source code 

Crea un usuario postgres a partir del nombre y el password Nombre usuario y password deben estar en Unicode

Raises:
  • exception - Exception

borraUsuario(self, nombreUsuarioUnicode)

source code 

Borra un usuario de postgres.

Raises:
  • exception - Exception

addUsuarioAGrupo(self, nombreUsuarioUnicode, grupoUnicode)

source code 

Añade un usuario a un grupo de postgres

Raises:
  • exception - Exception

deleteUsuarioDeGrupo(self, nombreUsuarioUnicode, grupoUnicode)

source code 

Borra un usuario de un grupo de postgres

Raises:
  • exception - Exception

sacaNombresCamposTabla_lista2(self, nomTablaCompleto)

source code 

Devuelve una lista con los nombres de los campos de una tabla.

Parameters:
  • nomTablaCompleto (string) - Nombre de la tabla, incluido el esquema.
Returns:
una lista con los nombres de los campos. Exception si hay error

Property Details [hide private]

consulta

Get Method:
__get_consulta(self)
Set Method:
'Solo lectura. La consulta realizada'

oConectaPg

Get Method:
__get_oConectaPg(self)
Set Method:
__set_oConectaPg(self, oConectaPg)
Delete Method:
'Objeto de la clase ConectaPg'

oGeneraExpresionesPsycopg2

Get Method:
__get_oGeneraExpresionesPsycopg2(self)
Set Method:
'Objeto de la clase GeneraExpresionesPsycopg2'