i'm trying to get a functional index to work on an email address
a table:
class EmailAddress(DeclaredTable):
__tablename__ = 'email_address'
id = sa.Column(sa.Integer, primary_key=True)
address = sa.Column(sa.Unicode(255), nullable=False)
which would have in postgres a command like:
sql= """CREATE UNIQUE INDEX email_address_uidx ON
email_address(lower(address));"""
the purpose of which, is so the postgres query planner searches
against the pre-cached version of email_address.lower() it makes, if i
"""SELECT * FROM email_address WHERE address =
lower(%s)""" ( significantly faster than """WHERE lower(address) =
lower(%s)""" )
Reading up on the mailing list and the docs, I can see that through
the usage of event listeners, I can use a DDL to accomplish this.
which is totally ine fine.
I'm just wondering though... wouldn't it make sense to have an
__event_name__ attribute on declared tables, which could be called
during routines ?
the current implementation works, and I'm not arguing with it -- its
very useful and powerful. i'm just looking at how i'd structure
code... and it I'd end up with bits and pieces of a single section in
multiple locations. it seems to me like this approach could help
centralize managing stuff.
ie
class EmailAddress(DeclaredTable):
__tablename__ = 'email_address'
__after_create__ = ["""CREATE UNIQUE INDEX email_address_uidx ON
email_address(lower(address));""", self._other ]
def _other(self):
pass
id = sa.Column(sa.Integer, primary_key=True)
address = sa.Column(sa.Unicode(255), nullable=False)
--
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/sqlalchemy?hl=en.