假设有以下两个表:
db.define_table('person',Field('id', 'string'), Field(‘name', 'string'), Field(‘dept', 'string'))
db.define_table('things',Field('id', 'string'), Field(‘name', 'string'), Field(‘owner', 'string'))
一、使用belongs进行嵌套查询
我们查询要求:things表中属于marketing部门的东西:
前边我们已经提到,belongs还可以用作嵌套查询:
rows = db(db.things.owner.belongs(db(db.person.dept == 'marketing')._select(db.person.name))).select()
红色部分就是一个嵌套,嵌套的select前记得加一个下划线_,
二、更清晰的书写规则
为了嵌套的条件更清晰,我们也可以这样书写,把嵌套单独拧出来写
owers = db(db.person.dept == 'marketing')._select(db.person.name)
rows = db(db.things.owner.belongs(owers)).select()
三、多重嵌套
当然有多个表时,可以多重嵌套,假如还有一个表,
db.define_table('vendor',Field('id', 'string'), Field(‘name', 'string'), Field(‘sku', 'string'))
我们要查询marketing部门人员的东西的生产商:
owers = db(db.person.dept == 'marketing')._select(db.person.name)
things = db(db.things.owner.belongs(owers))._select(db.things.name)文章来源:https://www.toymoban.com/news/detail-821846.html
vendors = db(db.vendor.sku.belongs(things)).select()文章来源地址https://www.toymoban.com/news/detail-821846.html
到了这里,关于pyDAL一个python的ORM(9) pyDAL的嵌套查询的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!