搜索

首页  >  问答  >  正文

python - 使用sqlalchemy操作mysql,如何获取随机几项?

users_query = db_session.query(User).filter(
    ~User.id.in_(followed_user_ids),
    User.status.in_([User.STATUS_NORMAL, User.STATUS_SUPER])
)

用.all()的话,结果太多了,我只想随机要5项,怎么写呢?

查了下stackoverflow已经解决:
http://stackoverflow.com/search?q=sqlalchemy+random

users = users_query.order_by(func.rand()).limit(5)
高洛峰高洛峰2886 天前432

全部回复(1)我来回复

  • 阿神

    阿神2017-04-17 17:40:33

    是随机 5 项,还是前 5 项?

    如果是前五项,比较简单:

    users_query = db_session.query(User).filter(
        ~User.id.in_(followed_user_ids),
        User.status.in_([User.STATUS_NORMAL, User.STATUS_SUPER])
    ).limit(5).all()

    如果是随机5项,要加一些东西:

    from  sqlalchemy.sql.expression import func
    
    users_query = db_session.query(User).filter(
        ~User.id.in_(followed_user_ids),
        User.status.in_([User.STATUS_NORMAL, User.STATUS_SUPER])
    ).order_by(func.random()).limit(5).all()

    回复
    0
  • 取消回复