Django orm中get和filter的不同?怎么对现有的表结构操作

Django的orm中get和filter的不同

get得到的是一个model对象,filter得到的是一组model对象,类型是queryset,是一个django定义的,可迭代的,可以当作是一个list操作,每个索引都是一个model对象。
get如果满足的条件大于一个的时候,会报错
#有点类似于如下:
get相当与fetchone()
filter相当与fetchall()

django orm 怎么对现有的表结构操作

django orm 怎么对现有的表结构操作
首先你要知道如何在视图里渲染模板,另外得要看你用的是什么数据库,以及你是否使用django的orm。
拿mysql为例,如果你只需要从现有数据库中查询数据并显示,那么使用MySQLdb模块即可,查询出来的数据和模板进行渲染,之后返回渲染后的模板对象即可。
sqlalchemy使用上有两个层次,1是使用sql expression, 说白可以让你用python写sql, 2是它的orm, orm是使用session的,自行管理session生存期,自行在多个过程中传递session,自行管理事务。写法上是通常的transaction script(java常说的贫血的domain model)模式。实际编码通常1和2混合编程。
django通过中间件部分隐藏了连接/事务管理的概念,写法上也比较简单,接近java常说的充血的domain model. 内容上也没有sqlalchemy 的sql expression层次。 易用性就体现出来了。

不过用过的orm中,能达到sqlalchemy这样高度的orm, 还没有在其他语言中看到。 ruby有sequal, java的jooq都有部分sqlalchemy思想的影子。

THE END