Menu

#25 Adds by[IndexName] method for every unique index.

closed-accepted
None
5
2005-11-02
2005-10-29
No

This is the summary of changes (copied from the patch).

User-visible Changes:
Now, fo each DatabaseIndex with unique=True you
have an extra method
by[IndexName] like by[AlternateID], that takes
as parameters the columns
used in the index. You can specify an extra
option when creating
DatabaseIndex, alternateMethodName, just like
with Columns with
alternateID=True.

Internal Changes:
Now dbconnection.DBAPI._SO_selectOneAlt() can
accept a sequence for
'column' and 'value' parameters. Both must have
the same len() and it's
mapped in the query as column[0] = value[0] AND
... column[N] = value[N]

index.SODatabaseIndex() constructor takes an
extra optional parameter
'alternateMethodName' wich is set by default to
by[IndexName].

main.sqlmeta.addIndex() now adds the proper
by[IndexName] method to
soClass, using
main.sqlmeta._SO_fetchAlternateID() to retrieve the data.

main.sqlmeta._SO_fetchAlternateID() now takes
an extra optional
parameter 'idxName' with the index name (when
it's called for an index)
for error reporting purpose. 'column' and
'value' parameters can accept
a sequence just like
dbconnection.DBAPI._SO_selectOneAlt().

Discussion

  • Leandro Lucarella

     
  • Leandro Lucarella

     
  • Leandro Lucarella

    Logged In: YES
    user_id=240225

    Here's a simple example of use.

     
  • Oleg Broytman

    Oleg Broytman - 2005-10-31
    • assigned_to: nobody --> phd
    • status: open --> open-invalid
     
  • Ian Bicking

    Ian Bicking - 2005-10-31

    Logged In: YES
    user_id=210337

    (copied from email comments)

    I don't want anymore automatic addition of methods to
    SQLObject classes -- I'm not very happy with the ones that
    already exist.

    Instead, I'd like index objects to become smarter, since
    they are already being explicitly named and put on the class
    as attributes. Potentially these objects could be callable,
    or have a .get() method. So it would be like:

    class Contact(SQLObject):

    areaCode = StringCol()
    number = StringCol()
    phoneIndex = DatabaseIndex('areaCode', 'number',
    unique=True)

    Contact.phoneIndex.get('555', '555-5555')
    # Also allowable:
    Contact.phoneIndex.get(number='555-5555', areaCode='555')

     
  • Leandro Lucarella

    Patch to expose indexes in soClass, so you can access an index via soClass.indexName

     
  • Leandro Lucarella

    New patch that implements SODabatabesIndex.get() method.

     
  • Leandro Lucarella

    New test for the SODabatabesIndex.get() method.

     
  • Oleg Broytman

    Oleg Broytman - 2005-11-02

    Logged In: YES
    user_id=4799

    Applied at the revision 1192 to the trunk. Thank you!

     
  • Oleg Broytman

    Oleg Broytman - 2005-11-02
    • status: open-invalid --> closed-accepted
     

Log in to post a comment.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.