70 lines
2.3 KiB
Markdown
70 lines
2.3 KiB
Markdown
## 使用sqlor模块操作数据库
|
||
日期数据,在数据库中用date类型,日期格式:YYYY-MM-DD
|
||
时间戳数据,在数据库中用timestamp类型,格式:YYYY-MM-DD hh:mm:ss.999
|
||
sor.R()
|
||
sor.sqlExe() 的select语句
|
||
如果ns中有'page'属性,返回数据格式如下
|
||
{
|
||
"total" # 查询结果总记录数
|
||
"rows": page指定的页数据, 缺省每页返回80条记录,pagerows属性可设置每页记录数
|
||
}
|
||
否则返回全部记录的数组
|
||
```
|
||
from sqlor.dbpools import DBPools
|
||
from ahserver.serverenv import ServerEnv
|
||
# 假设当前模块名称为"mymodule"
|
||
|
||
async def subcoro(sor, pid):
|
||
sql = "select * from appcoodes_kw where parentid=${pid}$"
|
||
r = await sor.sqlExe(sql, {'pid': pid})
|
||
return r
|
||
|
||
async def sqlor_op():
|
||
db = DBPools()
|
||
env = ServerEnv()
|
||
dbname = env.get_module_dbname()
|
||
async with db.sqlorContext(dbname) as sor:
|
||
# 事务中,如果代码或sql失败全部滚回,正常结束自动提交
|
||
|
||
id = env.uuid()
|
||
# 执行SQL返回记录数组
|
||
sql="select * from user where name = ${name}$ and gender = ${gender}$"
|
||
ns = {'name': 'Make', 'gender': '0'}
|
||
recs = await sor.sqlExe(sql, ns)
|
||
## recs为[]或返回的记录数组
|
||
|
||
# 执行SQL返回分页数据
|
||
sql="select * from user where name = ${name}$ and gender = ${gender}$"
|
||
ns = {'name': 'Make', 'gender': '0', 'page': 2}
|
||
recs = await sor.sqlExe(sql, ns)
|
||
## recs是一个DictObject对象实例,转字典为:{
|
||
"total": 12222,
|
||
"rows": [ ... ]
|
||
}
|
||
|
||
# 执行其他DML,DDL语句
|
||
sql = "update user set gender=${gender}$ where name=${name}$"
|
||
ns = {'name': 'Make', 'gender': '0', 'page': 2}
|
||
ret = await sor.sqlExe(sql, ns)
|
||
## 返回修改记录数
|
||
|
||
# CRUD,对单表操作的简单方式
|
||
|
||
# 添加数据
|
||
await sor.C('user', {'id':id, 'username':'john'})
|
||
## 添加数据表“user”数据
|
||
|
||
# 删除数据,只从ns中提取id字段,根据id删除记录
|
||
await sor.D('user', {'id': 'yuewfiuwe'})
|
||
|
||
# 修改数据,ns中的id保存不变,其他给定的值为数据修改后的值
|
||
# await sor.U('user', {'id', 'email':'test@abc.com'})
|
||
|
||
# 查询数据,返回满足ns条件的全部记录数组
|
||
# await sor.R('user', {'id': 'yuewfiuwe'})
|
||
|
||
# 查询数据, 返回满足条件的参数“page”页的数据
|
||
ns={'gender':'1', 'page': 3, 'pagerows': 100} # pagerows 缺省80
|
||
return await subcoro(sor, 'test_data')
|
||
```
|