八月 02, 2006

WHERE clause in SqlAlchemy

在以前使用SQLObject的时候,就对复合查询特别头痛,在邮件列表里面才了解到要怎样才能得到排序、限制查询个数这样的操作。


SqlAlchemy也有这样的问题,只是SA的文档比SO要想尽很多,这里就介绍了WHERE语句在SA中的实现。


逻辑关系: or_() , and_() , not_() , in_()



c = users.select(or_(users.c.user_name=='jack',
users.c.user_name=='ed')).execute()


c = users.select(and_(users.c.user_name=='jack',
users.c.password=='dog')).execute()


c = users.select(not_(
or_(users.c.user_name=='jack',
users.c.password=='dog')
)).execute()


c = users.select(users.c.user_name.in_(
'jack', 'ed', 'fred')).execute()

排序: order_by



c = users.select(order_by=
[asc(users.c.user_name)]).execute()

其中asc()desc()可以指明排序的方式(升序/降序)


限制查询的项数: limit, offset, distintic



c = users.select(limit=10,
offset=20, distintic=True).execute()





Technorati :
Del.icio.us :

没有评论: