相关疑难解决方法(0)

如何在 SQLAlchemy 中按多对多关系的计数进行排序?

我想按表上多对多关系的计数进行排序。

我的出发点是对该主题的(优秀)回应。然而,就我而言,涉及第三个表,我需要我的反向引用是“连接”而不是“动态”。

当我尝试解决该问题时,这两个更改的组合会导致编程错误。

这是我的设置。我在用户和帖子之间有相同的多对多关系。我的帖子和标题之间也有一对多的关系。我想要的是按喜欢每个帖子的用户数量排序的所有帖子的列表。

from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
from sqlalchemy.orm import relationship, backref
from sqlalchemy import func

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'postgres://xxx'
db = SQLAlchemy(app)


likes = db.Table('likes',
                 db.Column('user_id', db.Integer, db.ForeignKey('user.id')),
                 db.Column('post_id', db.Integer, db.ForeignKey('post.id')))


class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(20))

    def __repr__(self):
        return "<User('%s')>" % self.username


class Post(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(255))
    likes = db.relationship('User', secondary=likes,
                            backref=db.backref('posts', lazy='joined'))

    def __repr__(self):
        return "<Post('%s')>" % self.title


class Heading(db.Model):
    id = …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy flask-sqlalchemy

4
推荐指数
1
解决办法
3904
查看次数

SQLAlchemy按函数结果排序

这是我的代码,它正在工作(返回所有难以排序的问题):

def get_noteworthy_problems(self):

    ACategory = aliased(Category)
    AProblem = aliased(Problem)

    all_prob = DBSession.query(AProblem).filter(
        AProblem.parent_id == ACategory.id,
        ACategory.parent_id == self.id)

    noteworthy_problems = \
        sorted(all_prob, key=lambda x: x.difficulty(), reverse=True)

    return noteworthy_problems
Run Code Online (Sandbox Code Playgroud)

但我想我必须优化这段代码.是否有可能更改代码order_by和我的功能difficulty()?我的函数返回一个数字.我尝试过类似的东西:

    result = DBSession.query(AProblem).filter(
        AProblem.parent_id == ACategory.id,
        ACategory.parent_id == self.id).order_by(
        AProblem.difficulty().desc())
Run Code Online (Sandbox Code Playgroud)

但我收到错误TypeError: 'NoneType' object is not callable.

python sql sql-server sqlalchemy

4
推荐指数
1
解决办法
3133
查看次数

标签 统计

python ×2

sqlalchemy ×2

flask-sqlalchemy ×1

sql ×1

sql-server ×1