Python MySQLdb从无限线程中选择新数据

2024-10-04 01:35:30 发布

您现在位置:Python中文网/ 问答频道 /正文

使用python2.7和MySQLdb,我希望有一个无限线程,可以多次执行SELECT查询。当我修改表中的数据以获得或多或少的结果时,似乎只考虑了第一个选择,而这些结果永远不会改变。你知道吗

我的方法是:

def getUrlsToCrawl(self):
    dateNowUtc = datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%S")
    cursor = self.db.cursor()
    cursor.execute('SELECT id, url, nbErrors FROM mytable WHERE nbErrors < %s AND domain = %s and nextCrawl < %s', (self.MAX_RETRY, self.domain, dateNowUtc))
    print cursor._last_executed
    urls = cursor.fetchall()
    print urls
    cursor.close()
    return urls

到数据库的连接是在初始化时建立的,在我终止线程时关闭。你知道吗

这是日志

SELECT id, url, nbErrors FROM mytable WHERE nbErrors < 10 AND domain = 'foo.com' and nextCrawl < '2017-01-04T16:33:52'
((6L, u'http://www.foo.com/foo.php', 4L),)

SELECT id, url, nbErrors FROM mytable WHERE nbErrors < 10 AND domain = 'foo.com' and nextCrawl < '2017-01-04T16:33:59'
((6L, u'http://www.foo.com/foo.php', 4L),)

SELECT id, url, nbErrors FROM mytable WHERE nbErrors < 10 AND domain = 'foo.com' and nextCrawl < '2017-01-04T16:34:06'
((6L, u''http://www.foo.com/foo.php'', 4L),)

SELECT id, url, nbErrors FROM mytable WHERE nbErrors < 10 AND domain = 'foo.com' and nextCrawl < '2017-01-04T16:34:13'
((6L, u''http://www.foo.com/foo.php'', 4L),)

如果我将此条目的nbErrors从4更改为12,结果将保持不变,但查询不应得到此结果。你知道吗

我试图在初始化时打开光标,但没有关闭它。有什么建议吗?你知道吗


Tags: andfromselfcomidurlfoodomain