Buscar..


Creación de una tabla "Array of Dictionaries" con anclajes YAML como identificadores de fila

    ---
    person_table:
      - &person001
        fname:  homer
        lname:  simpson
        role:   dad
        age:    33

      - &person002
        fname:  marge
        lname:  simpson
        role:   mom
        age:    34

      - &person003
        fname:  peter
        lname:  griffin
        role:   dad
        age:    34

Problema

  • el desarrollador desea expresar una estructura de tabla en YAML, donde cada fila es referenciada por un identificador de fila compacto

Solución

  • use anclajes YAML, asignando un identificador de ancla a cada fila en la tabla
  • en YAML, los "identificadores de transclusión" reutilizables se llaman anclas y alias
  • en YAML, los "identificadores de transclusión" reutilizables consisten en tokens alfanuméricos precedidos por un signo y un asterisco

Razón fundamental

  • Los anclajes y alias de YAML permiten una mayor normalización de los datos
  • Los anclajes y los alias de YAML se aplican en DRY (no se repita)
  • en este ejemplo, se puede diseñar y conservar una estructura de tabla que coincida estrechamente con una base de datos

Escollos

  • Los anclajes YAML deben declararse antes de que puedan ser referenciados por alias.
  • Los anclajes YAML deben ser únicos en todo el documento.
  • si no se especifican los anclajes únicos, se producirá un error en yaml.load()
  • No todos los analizadores YAML admiten de forma fiable anclajes y alias.

Ver también

YAML Stackoverflow

Uso de alias YAML para hacer referencias cruzadas de una tabla YAML

    ---
    person_table:
      - &person001
        fname:  homer
        lname:  simpson
        role:   dad
        age:    33

      - &person002
        fname:  marge
        lname:  simpson
        role:   mom
        age:    34

      - &person003
        fname:  peter
        lname:  griffin
        role:   dad
        age:    34
        
    motto_table:
      - &motto001
        person:   *person001
        motto: >
          D'oh!! YAML is too complicated!

      - &motto002
        person:   *person002
        motto: >
          Bart! Listen to your father!

      - &motto003
        person:   *person003
        motto: >
          Hey! YAML is freakin' sweet!

Problema

  • el desarrollador desea hacer una referencia cruzada de filas con anclajes de una tabla y vincularlos con filas como alias en otra tabla

Solución

  • use alias YAML, que hacen referencia cruzada a los anclajes predefinidos de otra tabla
  • en YAML, los "identificadores de transclusión" reutilizables se llaman anclas y alias
  • en YAML, los "identificadores de transclusión" reutilizables consisten en tokens alfanuméricos precedidos por un signo y un asterisco

Razón fundamental

  • Los anclajes y alias de YAML permiten una mayor normalización de los datos
  • Los anclajes y los alias de YAML se aplican en DRY (no se repita)
  • en este ejemplo, se puede diseñar y conservar una estructura de tabla que coincida estrechamente con una base de datos
  • en este ejemplo, la entrada de datos y el tamaño de los archivos se pueden reducir

Escollos

  • en este ejemplo específico, yaml.load() producirá diccionarios anidados
    • Esto se conoce como el "problema de diccionarios anidados"
    • debajo del par nombre-valor de la persona, el valor para la persona será un sub-diccionario
    • esto puede ser indeseable, porque rompe la uniformidad de la estructura de la tabla
  • Si no se especifican correctamente los alias, se perderán los datos.
    • (Los errores tipográficos crearán referencias cruzadas rotas)
  • YAML no admite la transclusión de archivos por referencia, por lo que todos los alias y anclas deben existir en el mismo archivo yaml
  • No todos los analizadores YAML admiten de forma fiable anclajes y alias.

Ver también

YAML Stackoverflow

Usando las teclas de combinación YAML para hacer referencias cruzadas de filas de otra tabla YAML

    ---
    person_table:
      - &person001
        fname:  homer
        lname:  simpson
        role:   dad
        age:    33

      - &person002
        fname:  marge
        lname:  simpson
        role:   mom
        age:    34

      - &person003
        fname:  peter
        lname:  griffin
        role:   dad
        age:    34
        
    motto_table:
      - &motto001
        <<: *person001
        motto: >
          D'oh!! YAML is too complicated!

      - &motto002
        <<: *person002
        motto: >
          Bart! Listen to your father!

      - &motto003
        <<: *person003
        motto: >
          Hey! YAML is freakin' sweet!

Problema

  • el desarrollador desea hacer una referencia cruzada de filas con anclajes de una tabla y vincularlos con filas como alias en otra tabla
  • desarrollador desea evitar crear el "problema de diccionarios anidados"

Solución

  • usar alias YAML, con claves de fusión YAML
  • en YAML, los "identificadores de transclusión" reutilizables se llaman anclas y alias
  • en YAML, los "identificadores de transclusión" reutilizables consisten en tokens alfanuméricos precedidos por un signo y un asterisco

Razón fundamental

  • Los anclajes y alias de YAML permiten una mayor normalización de los datos
  • Los anclajes y los alias de YAML se aplican en DRY (no se repita)
  • en este ejemplo, se puede diseñar y conservar una estructura de tabla que coincida estrechamente con una base de datos
  • en este ejemplo, la entrada de datos y el tamaño de los archivos se pueden reducir

Escollos

  • en este ejemplo específico, yaml.load() producirá diccionarios anidados
    • debajo del par nombre-valor de la persona, el valor para la persona será un sub-diccionario
    • esto puede ser indeseable, porque rompe la uniformidad de la estructura de la tabla
  • Si no se especifican correctamente los alias, se perderán los datos.
    • (Los errores tipográficos crearán referencias cruzadas rotas)
  • YAML no admite la transclusión de archivos por referencia, por lo que todos los alias y anclas deben existir en el mismo archivo yaml
  • No todos los analizadores YAML admiten de forma fiable anclajes y alias.

Ver también



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow