Sqlite3 / Webpy: «нет такого столбца» с двойным левым соединением - PullRequest
1 голос
/ 23 сентября 2011

Я пытаюсь выполнить запрос Sqlite3 через webpy framework. Запрос работает в SQLiteManager. Но с web.db я получаю «sqlite3.OperationalError нет такого столбца a.id». Это ошибка webpy?

import web
db = web.database(dbn='sqlite', db='data/feed.db')
account = 1
query='''
    SELECT a.id, a.url, a.title, a.description, a.account_count, b.id subscribed FROM
    (SELECT feed.id, feed.url, feed.title, feed.description, count(account_feed.id) account_count
    FROM feed
    LEFT OUTER JOIN account_feed
    ON feed.id=account_feed.feed_id AND feed.actived=1
    GROUP BY feed.id, feed.url, feed.title, feed.description
    ORDER BY count(account_feed.id) DESC, feed.id DESC)
    a LEFT OUTER JOIN account_feed b ON a.id=b.feed_id AND b.account_id=$account'''

return list(self._db.query(query,vars=locals()))

Трассировка здесь: http://pastebin.com/pUA7zB9H

1 Ответ

0 голосов
/ 23 сентября 2011

Не знаю, почему вы получаете сообщение об ошибке "no such column a.id", но это может помочь

  1. использовать многострочную строку (легче читать),
  2. использовать параметризованный аргумент для account (Был ли $ account Perl-Hangover?)

query = '''
        SELECT a.id, a.url, a.title, a.description, a.account_count, b.id subscribed 
        FROM ( {q} ) a 
        LEFT OUTER JOIN account_feed b 
            ON a.id=b.feed_id 
               AND b.account_id = ?'''.format(q=query)

args=[account]
cursor.execute(query,args)
...