1 、简单查询
rows = db(db.person.dept == 'marketing').select(db.person.id, db.person.name, db.person.dept)
rows = db(db.person.dept == 'marketing').select()
rows = db(db.person.dept == 'marketing').select(db.person.ALL)
rows = db().select(db.person.ALL) / db(db.person).select()等于 select * from person
Rows(或者称为一个set)是个数据集,不是一条数据记录,可以用'标号'去访问其中一个记录,传统SQL也需要游标去访问各个记录
record = rows[0]
2、简单的数据遍历**:**
我们通常使用for循环变量rows数据集
for record in rows:
.....
3、获取某条记录的某字段值
访问到具体字段值有3种方法:
方法1:
record0_name = record.name
方法2:
record0_name = record ['name']
方法3:
record0_name = record ['person.name']
多表连接查询得到的数据集,必须采用方式3,需要同时给定出明确的 "表名+字段名",
相关内容后续会详细说明:
**4、first()****、**last()
**first()****、**last()方法用于rows查询结果中获取第一个和最后一个数据记录
record_first = rows.first()
record_last = rows.last()
db(db.person.id == '001').select() 用主键直接查,我们知道结果虽然只有一个数据,但是数据结构上,他还是个rows数据集,我们可以这样:
record = db(db.person.id == '001').select().first()
我们这样写些行吗?
record = db(db.person.id == '001').select()[0]
(这样写稍微有些问题,因为如果查询结果为空就会 抛出异常报错)
5、 多条件的组合
(1)AND逻辑
rows = db((db.person.dept == 'marketing') & (db.person.name == 'allen' ) ).select()
(2)OR逻辑
rows = db((db.person.dept == 'marketing') | (db.person.dept == 'finance') ).select()
(3)混合逻辑组合(注意括号)
rows = db( (db.person.name == 'allen' ) &
((db.person.dept == 'marketing') | (db.person.dept == 'finance')) ).select()
rows = db( ((db.person.name == 'allen') | (db.person.name == 'lily') )&
( (db.person.dept == 'marketing') | (db.person.dept == 'finance') ) ).select()