关于 sqlalchemy 中 desc 的疑问

2016-02-28 21:39:17 +08:00
 honmaple

关于 desc 我见过两种用法,分别是 order_by(Questions.time.desc())和 order_by(desc(Questions.time)),请教这两种用法有什么区别?
现在我要设置关联表的排序,应该使用哪种方法:

tag_question = db.relationship('Tags',
                               secondary=tag_question,
                               backref=db.backref('questions',
                                                  lazy='dynamic',
                                                  order_by='desc(Questions.time)')
                               )

还是

tag_question = db.relationship('Tags',
                               secondary=tag_question,
                               backref=db.backref('questions',
                                                  lazy='dynamic',
                                                  order_by='Questions.time.desc()')
                               )

但实际上 desc 并没有起作用(是我的错觉吗)

如果我要设置默认排序

__mapper_args__ = {
        "order_by":'Questions.time desc'
    }

却只有这种方法勉强有效,原来的两种方法直接运行不了,而Questions.time desc虽然可以运行,但是有错误提示

/venv/lib/python3.5/site-packages/sqlalchemy/sql/compiler.py:575: SAWarning: Can't resolve label reference 'Questions.time desc'; converting to text() (this warning may be suppressed after 10 occurrences)
util.ellipses_string(element.element))

求助大神

1837 次点击
所在节点    Python
1 条回复
honmaple
2016-03-03 11:55:06 +08:00
设置默认排序使用
__mapper_args__ = {
"order_by":time.desc()
}

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/259715

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX