twisted.enterprise.sqlreflector.SQLReflector

Package twisted :: Package enterprise :: Module sqlreflector :: Class SQLReflector |
[frames | no frames]

## Class SQLReflector

    Augmentation --+
                   |
       Reflector --+
                   |
                  SQLReflector

I reflect on a database and load RowObjects from it.

In order to do this, I interrogate a relational database to extract schema information and interface with RowObject class objects that can interact with specific tables.

Method Summary
| ``__init__`(self, dbpool, rowClasses)` Initialize me against a database.
| ``_populate`(self)` Implement me to populate schema information for the reflector.
| ``_populateSchemaFor`(self, rc)` Construct all the SQL templates for database operations on <tableName> and populate the class <rowClass> with that info.
| ``_rowLoader`(self, transaction, tableName, parentRow, data, whereClause, forceChildren)` immediate loading of rowobjects from the table with the whereClause.
| ``_transPopulateSchema`(self)` Used to construct the row classes in a single interaction.
| ``buildDeleteSQL`(self, tableInfo)` Build the SQL template to delete a row from the table.
| ``buildInsertSQL`(self, tableInfo)` (Internal) Build SQL template to insert a new row.
| ``buildUpdateSQL`(self, tableInfo)` (Internal) Build SQL template to update a RowObject.
| ``deleteRow`(self, rowObject)` Delete the row for rowObject from the database.
| ``deleteRowSQL`(self, rowObject)` Build SQL to delete rowObject from the database.
| ``escape_string`(self, text)` Escape a string for use in an SQL statement.
| `findTypeFor(self, tableName, columnName)`
| ``insertRow`(self, rowObject)` Insert a new row for rowObject.
| ``insertRowSQL`(self, rowObject)` Build SQL to insert the contents of rowObject.
| ``loadObjectsFrom`(self, tableName, parentRow, data, whereClause, forceChildren)` Load a set of RowObjects from a database.
| ``quote_value`(self, value, type)` Format a value for use in an SQL statement.
| ``updateRow`(self, rowObject)` Update the contents of rowObject to the database.
| ``updateRowSQL`(self, rowObject)` Build SQL to update the contents of rowObject.
Inherited from Reflector
| ``__getstate__`(self)`
| ``__setstate__`(self, state)`
| ``addToCache`(self, rowObject)` NOTE: Should this be recursive?! requires better container knowledge...
| ``addToParent`(self, parentRow, rows, tableName)` util method used by reflectors.
| ``buildWhereClause`(self, relationship, row)` util method used by reflectors.
| ``findInCache`(self, rowClass, kw)`
| ``getTableInfo`(self, rowObject)` Get a TableInfo record about a particular instance.
| ``populateSchemaFor`(self, tableInfo)` This is called once for each registered rowClass to add it and its foreign key relationships for that rowClass to the schema.
| ``removeFromCache`(self, rowObject)` NOTE: should this be recursive!??
Inherited from Augmentation
| ``createSchema`(self)`
| ``operationDone`(self, done)` Example callback for database operation success.
| ``operationError`(self, error)` Example callback for database operation failure.
| ``runInteraction`(self, interaction, *args, **kw)`
| ``runOperation`(self, *args, **kw)`
| ``runQuery`(self, *args, **kw)`
| ``schemaCreated`(self, result)`
| ``schemaNotCreated`(self, error)`

Class Variable Summary
`dict` | `conditionalLabels` = `{0: '=', 1: '<', 2: '>', 3: 'like'}`
`int` | `populated` = 0
Inherited from Augmentation
`str` | `schema` = `' Insert your SQL database schema here. '`

Method Details

### __init__(self, dbpool, rowClasses) (Constructor) Initialize me against a database. Overrides: `twisted.enterprise.reflector.Reflector.__init__`

### _populate(self) Implement me to populate schema information for the reflector. Overrides: `twisted.enterprise.reflector.Reflector._populate` (inherited documentation)

### _populateSchemaFor(self, rc) Construct all the SQL templates for database operations on <tableName> and populate the class <rowClass> with that info.

### _rowLoader(self, transaction, tableName, parentRow, data, whereClause, forceChildren) immediate loading of rowobjects from the table with the whereClause.

### _transPopulateSchema(self) Used to construct the row classes in a single interaction.

### buildDeleteSQL(self, tableInfo) Build the SQL template to delete a row from the table.

### buildInsertSQL(self, tableInfo) (Internal) Build SQL template to insert a new row. Returns: SQL that is used to insert a new row for a rowObject instance not created from the database.

### buildUpdateSQL(self, tableInfo) (Internal) Build SQL template to update a RowObject. Returns: SQL that is used to contruct a rowObject class.

### deleteRow(self, rowObject) Delete the row for rowObject from the database. Overrides: `twisted.enterprise.reflector.Reflector.deleteRow`

### deleteRowSQL(self, rowObject) Build SQL to delete rowObject from the database.

### escape_string(self, text) Escape a string for use in an SQL statement. The default implementation escapes ' with '' and \ with \. Redefine this function in a subclass if your database server uses different escaping rules.

### insertRow(self, rowObject) Insert a new row for rowObject. Overrides: `twisted.enterprise.reflector.Reflector.insertRow`

### insertRowSQL(self, rowObject) Build SQL to insert the contents of rowObject.

### loadObjectsFrom(self, tableName, parentRow=None, data=None, whereClause=None, forceChildren=0) Load a set of RowObjects from a database. Create a set of python objects of <rowClass> from the contents of a table populated with appropriate data members. Example:
     |  class EmployeeRow(row.RowObject):
     |      pass
     |
     |  def gotEmployees(employees):
     |      for emp in employees:
     |          emp.manager = "fred smith"
     |          manager.updateRow(emp)
     |
     |  reflector.loadObjectsFrom("employee",
     |                          data = userData,
     |                          whereClause = [("manager" , EQUAL, "fred smith")]
     |                          ).addCallback(gotEmployees)
NOTE: the objects and all children should be loaded in a single transaction. NOTE: can specify a parentRow _OR_ a whereClause. Overrides: `twisted.enterprise.reflector.Reflector.loadObjectsFrom`

### quote_value(self, value, type) Format a value for use in an SQL statement. Parameters: `value` - a value to format as data in SQL. `type` - a key in util.dbTypeMap.

### updateRow(self, rowObject) Update the contents of rowObject to the database. Overrides: `twisted.enterprise.reflector.Reflector.updateRow`

### updateRowSQL(self, rowObject) Build SQL to update the contents of rowObject.

Class Variable Details

    ### conditionalLabels Type: `dict` Value:
        {0: '=', 1: '<', 2: '>', 3: 'like'}

    ### populated Type: `int` Value:
        0

Generated by Epydoc 2.0 on Sat May 15 20:07:55 2004 | http://epydoc.sf.net