theres three layers to this issue. the first is, yes as_scalar() is trying to compile the expression which I don't think there's a very good reason, so ill likely commit a change for that (it will result in a behavioral change regarding the namespace of "someselect.c" but im hoping not one anyone was relying upon that). the second layer is, if you're casting against a constant value like below, or a column on the Order class, you don't need the select() - just say cast(...).label('foo') - however, convenient operations like "print query" still wont work since they evaulate the cast() without a dialect. the third is, the whole "cast can't compile without a dialect" thing is going away in 0.6, but I can't make it work in 0.5 without major changes.
One particular workaround that would totally eliminate the issue until 0.6 comes out would be to use the dialect-specific type for now, i.e. MSNumeric (mysql), PGNumeric (postgres), SLNumeric (sqlite). On Mar 22, 2009, at 6:27 AM, Shawn Church wrote: > >>> import sqlalchemy > >>> sqlalchemy.__version__ > '0.5.2' > > >>> from sqlalchemy import * > >>> from sqlalchemy.orm import relation, column_property, > sessionmaker > > >>> from sqlalchemy.ext.declarative import declarative_base > >>> Base = declarative_base() > >>> Session = sessionmaker() > > >>> class Order(Base): > ... __tablename__ = "orders" > ... > ... id = Column(Integer, primary_key = True) > ... > ... test = column_property(select([cast(1, > Numeric(14,2))]).label("test")) --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalchemy@googlegroups.com To unsubscribe from this group, send email to sqlalchemy+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en -~----------~----~----~----~------~----~------~--~---