[Twisted-Python] Enterprise Row Objects
sean at twistedmatrix.com
Mon Sep 23 23:57:02 EDT 2002
I found that if I can remove all of the database implementation specific
code and the database initialization phase for reflectors if the class
attribute "rowColumns" is extended to include the type of the column in
addition to its name.
so when users define a new row class,
rowColumns = ["col1", "col2", "col3"]
rowColumns = [("col1", "int"), ("col2", "varchar"), ("col3", "int")]
Itamar pointed me at PySQLite ( http://www.hwaci.com/sw/sqlite/ and
http://pysqlite.sourceforge.net/ ) and i couldnt implement a reflector for
it because there is no way to determine the type of a column as SQLite lacks
detailed system catalogs. Adding the type information to rowColumns was the
obvious solution and happily it has additional benefits:
- no longer require a database catalog lookup to populate rowClasses
- no defered initialization phase for reflectors
- databases without full schema information available (XML and SQLite) can
So, the SQL Reflector now works purely on the python DBAPI spec - it should
work with any supported python DBAPI module. I've run it with PostgreSQL
and SQLite. I'd like to hear if anyone can run it on another database or
In Twisted.doc.examples there is now:
row_util.py - classes for row examples
row_schema.sql - sample database schema
row_example.py - example code using a postgresql or sqlite database
row_xml.py - example code that uses an XML "database"
Additional functionality would be the ability to generate stubbed rowObject
classes from a relational database schema.
...and I wont update the documentation with PageMill.
"If he's so smart, then how come he's dead?", Homer Simspon
sean at ninjaneering.com
More information about the Twisted-Python