pyDAL一个python的ORM(4) pyDAL查询操作

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()

相关推荐
splage2 分钟前
Java进阶——IO 流
java·开发语言·python
cliffordl3 分钟前
设计模式(python)
python·设计模式
天空属于哈夫克35 分钟前
自动化素材中枢:实现云端文件与外部群消息的异步同步方案
数据库·oracle
Navicat中国27 分钟前
Navicat Premium Lite 正式登录鸿蒙应用市场
数据库·华为·harmonyos·navicat
Yvonne爱编码34 分钟前
数据库---Day 1 数据库基础
数据库·mysql·oracle
always_TT36 分钟前
从Python_Java转学C语言需要注意什么?
java·c语言·python
Ricky_Theseus40 分钟前
数据库关系代数 - 连接操作
linux·数据库·算法
2301_7938046942 分钟前
定时任务专家:Python Schedule库使用指南
jvm·数据库·python
guslegend1 小时前
MySQL高手第三章
数据库·mysql
spring2997921 小时前
MySQL无法连接到本地localhost的解决办法2024.11.8
数据库·mysql·adb