0

私はこの2つのSQLiteスクリプトを持っています:両方とも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()方法は非常にうまく機能しますがgetOutgoingLinks()、PythonがSQLステートメントを実行しようとすると無限ループが発生します。何がうまくいかなかったのか?

4

2 に答える 2

0

select ...(Select ...)なしでSelectステートメントを書き直してください-それは非常に悪いスタイルです。結果はあなたの問題を解決するかもしれません。

于 2012-06-26T08:55:55.510 に答える