Sqlite3 / Webpy:“没有这样的列”,双左连接

时间:2011-09-23 16:05:57

标签: python sqlite left-join web web.py

我正在尝试通过webpy框架进行Sqlite3查询。查询在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 :(得分:0)

不确定为什么你会收到错误“没有这样的列a.id”,但是 它可能会有所帮助

  1. 使用多行字符串(更易于阅读),
  2. account使用参数化参数($ per per-hangover?)

  3. 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)