21
這是我目前的模型的一個簡單的例子(我使用的是Flask SQLAlchemy extension):SQLAlchemy的順序通過在許多計數一對多的關係
like = db.Table(
'like',
db.Column('uid', db.Integer, db.ForeignKey('users.id')),
db.Column('pid', db.Integer, db.ForeignKey('posts.id'))
)
class User(db.Model):
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key = True)
username = db.Column(db.String(20))
class Post(db.Model):
__tablename__ = 'posts'
id = db.Column(db.Integer, primary_key = True)
title = db.Column(db.String(255))
likes = db.relationship(
'User',
secondary = like,
backref = db.backref('likes', lazy = 'dynamic'),
lazy = 'dynamic'
)
我試圖通過訂購Post
的的數量喜歡它有。
這是我基本上試圖發出查詢:
SELECT p.*, COUNT(l.`pid`) as `likes`
FROM `posts` as p
LEFT JOIN `like` as l
ON p.`id` = l.`pid`
GROUP BY p.`id`
ORDER BY `likes` DESC
我只是一直沒能得到任何有關的東西SQLAlchemy的一側工作。
感謝任何人可以提供的幫助。
嘿,謝謝你的回答。幾件事情要注意。查詢結尾處有一個額外的括號。 MySQL不喜歡''-total''(儘管總DESC'工作正常)_。另外,我認爲將id設置爲'.group_by(Post.id)'可能會更好。最後我遇到了'func.count(likes)'的問題。它正在翻譯成一個空數_('COUNT()')_。提供一個列,通過'func.count(likes.c.did)'固定它。再次感謝。 – anomareh 2011-05-12 09:06:04
@anomareh太棒了,很高興它有幫助。我會更新我的答案,所以它(希望)更通用。我想知道這裏有不同的SQLAlchemy版本嗎?我正在使用0.7b4。 – zeekay 2011-05-12 09:18:41
可能,我正在使用0.6.7。 – anomareh 2011-05-12 09:39:01