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

如果通过无限循环你的意思是函数永远不会返回一个值,我有同样的问题。

为什么 python+sqlite3 非常慢?. 对于大型表,python 2.7 附带的版本会成为性能问题。我通过按照此处指定的升级 sqlite3 解决了这个问题:https ://stackoverflow.com/a/3341117/3894804

于 2014-09-28T19:17:18.270 回答
0

在没有 select ...( Select ...) 的情况下重写您的 Select 语句 - 这是非常糟糕的风格。结果可能会解决您的问题。

于 2012-06-26T08:55:55.510 回答