从pyramid docs建设
@classmethod
def all(cls, request):
query = request.dbsession.query(BlogRecord)
return query.order_by(sa.desc(BlogRecord.created))
我不明白这句话中发生了什么。
query = request.dbsession.query(BlogRecord)
据我所知,我们创建了一个查询类的示例,但我们得到了什么:
query(BlogRecord)
继承?request.dbsession.query
我不知道。假设您完成了教程中包括1. Create your pyramid_blogr project structure和Adding model definitions的所有前面的步骤,您就会知道BlogRecord
是类BlogRecord
的对象或实例,它继承自使用Base
cookiecutter创建的models.meta
中定义的SQLAlchemy元数据alchemy
类。这一行:
query = request.dbsession.query(BlogRecord)
创建变量query
并将数据库查询对象指定为其值。它还没有执行查询。下一行就是这样,并返回结果。
更进一步,拆除request.dbsession.query
,request
部分是在金字塔中传递的request对象。属性可以附加到请求对象,在这种情况下,dbsession
对象(SQLAlchemy数据库会话对象)是属性。这又有一个名为query
的方法,它接受一个数据模型作为其参数。
这主要是关于类和方法的Python内容,而不是特定于Pyramid的。我建议阅读有关Python文档和教程中的更多内容。
注意:来自@ not_a_bot_no_really_82353的答案是完全错误的。金字塔不使用requests
(复数)库。金字塔有一个request
(singular) object。 “docs”也是社区贡献的教程,而不是文档。有关官方文档和教程,请访问https://docs.pylonsproject.org/projects/pyramid/en/latest/index.html