Please note: this project is inactive since early 2006

2.4.2 A sample PyModel

Before dealing with all the details, here is an overview of a PyModel. Note the the id default property for entities, as well as the predefined Attribute sub-types, APrimaryKey and AString.

from Modeling.PyModel import *

# Set preferred defaults for this model (when different from 
# standard defaults, or if we want to make things explicit)

AFloat.defaults['precision'] = 10
AFloat.defaults['scale'] = 2
AString.defaults['width'] = 40

Association.defaults['delete']=['nullify', 'nullify']

Entity.defaults['properties'] = [
  APrimaryKey('id', isClassProperty=0, isRequired=1, doc='PK')

_connDict = {'database': 'AUTHOR_BOOKS'}
model = Model('AuthorBooks',adaptorName='Postgresql', connDict=_connDict)
model.entities = [
         properties=[ AString('title', isRequired=1, columnName='title'),
         properties=[ AString('lastName',isRequired=1, width=30,
                              displayLabel='Last Name', ),
                      AString('firstName', displayLabel='First Name', ),
                      AInteger('age', displayLabel='Age', ),
                      ADateTime('birthday', usedForLocking=0,
                                displayLabel='birthday', ),
  Association('Book', 'Writer',
              relations=['author', 'books'],
              delete=['nullify', 'cascade']),
  Association('Writer', 'Writer',
              relations=['pygmalion', None],
              delete=['nullify', None]),

A PyModel is typically made of two parts: a first part sets the defaults, then the second one defines the model. Defaults helps you keep the model definition tidy, by removing the repetitive parts from the model definition itself; in this example, the defaults add a primary key to each entity, sets the width for strings, etc.

Comments are welcome: Sebastien Bigaret / Modeling Home Page
Hosted Logo