2012-06-25 60 views
0

我有這2個SQLite腳本: 都通過直接輸入SQLite進行測試。Python:執行SQLite語句時無限循環

def getOutgoingLinks(self, hostname): 
    t = (hostname,) 
    result = self.__cursor.execute("SELECT url.id, hostname.name, url.path, linking_to.keyword, siteId.id " + 
            "FROM url, hostname, linking_to, " + 
            "(SELECT url.id FROM url, hostname " + 
            "WHERE hostname.name = (?) " + 
            "AND hostname.id = url.hostname_id " + 
            ") AS siteId " + 
            "WHERE linking_to.from_id = siteId.id " + 
            "AND linking_to.to_id = url.id " + 
            "AND url.hostname_id = hostname.id", t)   
    result = result.fetchall() 
    return result 

def getIncommingLinks(self, hostname): 
    t = (hostname,) 
    result = self.__cursor.execute("SELECT url.id, hostname.name, url.path, linking_to.keyword, siteId.id " + 
            "FROM url, hostname, linking_to, " + 
            "(SELECT url.id FROM url, hostname " + 
            "WHERE hostname.name = (?) " + 
            "AND hostname.id = url.hostname_id " + 
            ") AS siteId " + 
            "WHERE linking_to.to_id = siteId.id " + 
            "AND linking_to.from_id = url.id " + 
            "AND url.hostname_id = hostname.id", t) 
    result = result.fetchall() 
    return result 

getIncommingLinks() methond工作得很好,但getOutgoingLinks()導致一個無限循環當Python改掉執行SQL語句。任何想法出了什麼問題?

回答

0

重寫您的選擇語句沒有選擇...(選擇...) - 這是非常糟糕的風格。結果可能會解決您的問題。