<HTML><BODY style="word-wrap: break-word; -khtml-nbsp-mode: space; -khtml-line-break: after-white-space; "><BR><DIV><DIV>On Nov 26, 2006, at 5:20 PM, Toshio Kuratomi wrote:</DIV><DIV><BR class="khtml-block-placeholder"></DIV><BLOCKQUOTE type="cite"><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">4) While working on the schema, I've become a bit less enamoured with</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">SQLObject.<SPAN class="Apple-converted-space"> </SPAN>It seems to make easy things easy and hard things difficult</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">to impossible.<SPAN class="Apple-converted-space"> </SPAN>For instance, there doesn't seem to be a way to specify</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">multi-field primary keys (or multi-field unique constraints which would</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">do almost as well.)<SPAN class="Apple-converted-space"> </SPAN></DIV></BLOCKQUOTE><DIV><BR class="khtml-block-placeholder"></DIV><DIV>From the docs:</DIV><DIV>"<FONT class="Apple-style-span" face="Helvetica" size="3"><SPAN class="Apple-style-span" style="font-size: 12px;">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)."</SPAN></FONT></DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>(And I happen to agree with their reasoning behind this decision...) Doing unique constraints is easy enough, though:</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>class Foo:</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre"> </SPAN>firstName = StringCol(length=30)</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre"> </SPAN>lastName = StringCol(length=40)</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre"> </SPAN>firstLastIndex = DatabaseIndex('firstName', 'lastName', unique=1)</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>Are there any other specific issues that you had with SQLObject?</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>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 :)</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>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.</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>Best,</DIV><DIV>-- Elliot</DIV><BR></DIV><BR></BODY></HTML>