2022-01-19.tortoise-orm执行原生sql语句

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2022-01-19.tortoise-orm执行原生sql语句相关的知识,希望对你有一定的参考价值。

参考技术A 最近在做的东西,用上了fastapi+tortoise-orm的技术方案。
在fastapi的models.py中,一般是这样写的:

这时候,想用一些原生sql语句执行一些复杂的查询,tortoise提供了一个raw()方法。一般会使用下面的写法:

按此执行,一般会报错,显示keyError year(create_date)之类的信息。

实际上这个问题非常容易解决。只需要在class TableA中声明SELECT的字段就行,即将class修改为如下:

并将year(create_date)的结果储存为year_date字段,形如以下:

这样就可以了。

以上,如果有错误,还请留言批评指正。

2022-01-22 增加:

上文这个方法有问题,这样做了之后,还是会报错:"Unknown column..."
还得在SQL的表里增加对应的字段……这虽然可以使用了,但是很丑。

如果有什么更好的方法,还请不吝赐教。

2022-01-22 增加:

找到一个方法。将models.py 增加引入:

并编辑方法:

这时候,就不需要按文章开头的做法,增加字段,也不需要在SQL的表中增加字段了。

不过,需要注意的是,上面方法获取的结果为dict组成的list,dict的keys为表的字段名(带类型),在使用时无法直接用类的属性获取,需要特别注意。

哎,如果能使用raw()方法,并且对key没有那么些约束就好了。
如果有,还请不吝赐教。

Oracle执行计划总结

Oracle执行计划概述

获取执行计划

看懂执行计划


在这里插入图片描述

以上是关于2022-01-19.tortoise-orm执行原生sql语句的主要内容,如果未能解决你的问题,请参考以下文章

编译执行和解释执行的区别

jvm的解释执行与编译执行

Jmeter--多个线程组顺序执行和并行执行

小记---------手动执行脚本正常执行,使用crontab定时执行时 不执行

同步执行与异步执行

js函数执行顺序,怎麼让一个函数执行完再执行下面的程序