2012-08-22 39 views
1

连接到Oracle数据库中,我需要运行下面的查询:SQLAlchemy的选择TO_DATE

SELECT 
    ad_campaign_id as campaign_id, 
    TO_DATE("DAY", 'YYYY-MM-DD') as DAY, 
    NVL(spent, 0) as spent, 
    impressions, 
    clicks 
FROM sometable 

我如何能做到这一点与SQLAlchemy的?我如何发送参数给func.to_date函数?

回答

0

这里是你如何执行任意查询:

engine.execute(query_string) 

建立发动机则是另一回事。尽管如此,它还是非常有用的。

如果你问如何使用一些模型,这是一个不同的故事再次...

做到这一点所以这是你的问题的第一部分回答了(可能)。但是,func.to_date函数是什么意思?请说明

0

SQLAlchemy的func将接受任何Oracle函数作为属性。

from sqlalchemy import func 

campaign_id = sometable.c.ad_campaign_id 
day = func.to_date(sometable.c.day, 'YYYY-MM-DD') # Is this what you need? 
spent = func.nvl(sometable.c.spent, 0) 
clicks = sometable.c.clicks 
cols = [campaign_id, day, spent, clicks] 

# Feel free to skip, this is just so you get the labels you want 
labels = "campaign_id day spent clicks".split() 
col_label = zip(cols, labels) 
labelled = [c.label(l) for (c,l) in col_label] 

q = session.query(*labelled) # or use *cols if you don't care about labels 
q.all()