Along the same lines, is there something we can do about nvl()
(oracle) versus coalesce() (ansi)?

They aren't exactly the same, unfortunately (nvl takes exactly 2
arguments, no more), so maybe there is nothing 'official' you can do,
but can you help me work it out for my project?

I assume it is very similar to what you helped me out with
above...something like this:

============================================================
from sqlalchemy.sql.expression import ColumnElement
from sqlalchemy.ext.compiler import compiles
from sqlalchemy.types import DateTime, Date

class current_date(ColumnElement):
    type = Date()

@compiles(current_date)
def _compiler_dispatch(element, compiler, **kw):
    if compiler.dialect.name == 'oracle':
        if compiler.dialect.use_ansi:
            return "trunc(current_date)"
        else:
            return "trunc(sysdate)"
    else:
        # assume postgres
        return "current_date"
============================================================


But the main difference is it takes arguments.

Is there a clever way to return the appropriate function, something
like this:

def ....
    if compiler.dialect.name == 'oracle':
        return func.nvl
    else:
        # assume postgres
        return func.coalesce


How would I work that out?


Thank you in advance.



On Apr 2, 4:12 pm, "Michael Bayer" <mike...@zzzcomputing.com> wrote:
> Kent wrote:
> > Any chance you plan to make func.now consider oracle and
> > use_ansi=False (and return sysdate)?
>
> the use_ansi flag should be removed as far as public API since we can
> detect server version now.   we can also make now() return sysdate()
> unconditionally on oracle, you should give us a trac ticket for the latter
> on milestone 0.6.
>
>
>
> > On Feb 3, 4:44 pm, "Michael Bayer" <mike...@zzzcomputing.com> wrote:
> >> Kent wrote:
> >> > Any chance SQLAlchemy has a mechanism to switch to or fromsysdatevs.
> >> >current_datebased on the database dialect (and maybe use_ansi)?
>
> >> > It would be really nice if I could program in sqla not knowing which
> >> > database type I am connected to and still could select the current
> >> > date from the database... can I?
>
> >> func.now() does do this (well, it returns CURRENT_TIMESTAMP,
> >> isCURRENT_DATEdifferent?). it doesn't take use_ansi into account
> >> though
> >> (though that would be an easy patch to theOracledialect).
>
> >> Aside from all that, this is also easy enough to roll yourself:
>
> >> from sqlalchemy.sql.expression import ColumnElement
> >> from sqlalchemy.ext.compiler import compiles
>
> >> classcurrent_date(ColumnElement):
> >> type = sa.DateTime()
>
> >> @compiler.compiles(current_date)
> >> def _compiler_dispatch(element, compiler, **kw):
> >> if compiler.dialect.name == 'oracle':
> >> if not compiler.dialect.use_ansi:
> >> return "sysdate"
> >> else:
> >> return "current_date"
> >> else:
> >> # etc ...
>
> >> then just saycurrent_date() to get the expression.
>
> >> you could also throw @compiles onto "sqlalchemy.sql.functions.now" if
> >> you
> >> wanted to augment what func.now() returns.
>
> >> > --
> >> > You received this message because you are subscribed to the Google
> >> Groups
> >> > "sqlalchemy" group.
> >> > To post to this group, send email to sqlalch...@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.
>
> > --
> > You received this message because you are subscribed to the Google Groups
> > "sqlalchemy" group.
> > To post to this group, send email to sqlalch...@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.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to sqlalch...@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.

Reply via email to