首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >sql alchemy :派生列示例

sql alchemy :派生列示例
EN

Stack Overflow用户
提问于 2013-01-24 12:23:24
回答 1查看 1.2K关注 0票数 1
代码语言:javascript
运行
复制
#necessary import goes here
engine = sqlalchemy.create_engine('mysql://root@127.0.0.1/test',echo=False)
print 'Engine created'
connection=engine.connect()
metadata=MetaData(engine)
metadata.bind=engine
Session =  sessionmaker(bind=engine)
session = Session()
mapping = Table('mapping',metadata,autoload=True)

class Mapping(object):
    pass
MappingMapper=mapper(Mapping,mapping)

现在我可以为插入、更新、删除、过滤等编写基本的查询了。

问:1我需要编写复杂的查询,其中我确实根据现有的列派生新的列。例如。ColA,ColB在表上,ColC不是表结构的一部分。从表中选择(ColA+ColB)作为ColC,其中ColC > 50 order by ColC。

我不知道如何使用SqlAlchemy转换上面的查询。如何映射,如何检索。

EN

回答 1

Stack Overflow用户

发布于 2013-01-24 18:02:55

最简单的方法是使用Hybrid Attributes。在您的示例中,只需将类的声明更改为以下内容:

代码语言:javascript
运行
复制
from sqlalchemy.ext.hybrid import hybrid_property

class Mapping(object):
    @hybrid_property
    def ColC(self):
        return self.ColA + self.ColB

然后查询:

代码语言:javascript
运行
复制
qry = session.query(Mapping).filter(Mapping.ColC > 80) 

将生成SQL:

代码语言:javascript
运行
复制
SELECT mapping.id AS mapping_id, ...
FROM mapping
WHERE mapping."ColA" + mapping."ColB" > ?
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14493942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档