On Nov 26, 2006, at 5:20 PM, Toshio Kuratomi wrote:

4) While working on the schema, I've become a bit less enamoured with
SQLObject.  It seems to make easy things easy and hard things difficult
to impossible.  For instance, there doesn't seem to be a way to specify
multi-field primary keys (or multi-field unique constraints which would
do almost as well.) 

From the docs:
"SQLObject does not support primary keys made up of multiple columns (that probably won't change). It does not generally support tables with primary keys with business meaning -- i.e., primary keys are assumed to be immutable (that won't change)."

(And I happen to agree with their reasoning behind this decision...) Doing unique constraints is easy enough, though:

class Foo:
firstName = StringCol(length=30)
lastName = StringCol(length=40)
firstLastIndex = DatabaseIndex('firstName', 'lastName', unique=1)

Are there any other specific issues that you had with SQLObject?

I don't know SQLAlchemy, but I suspect that for now the "devil you know" is better than the "devil you don't". Or maybe I haven't run into the real-world problems that you have with your schema :)

I think calling Brew a packageDB is a bit of a stretch. From what I recall, yes, it can track who owns what packages (and the packageDB schema I originally suggested was based in part on the brew-style schema :). However, the packageDB has a lot more community-only stuff that just wasn't thought of in the brew world. The best end result would probably be had by continuing the packageDB work, and merging that functionality onto brew when appropriate.

Best,
-- Elliot