2017-01-04 4 views
0

python2.7とMySQLdbを使用して、時々刻々SELECTクエリを実行する無限のスレッドが必要です。最初のSELECTだけが考慮されているようです。テーブル内のデータを変更すると、変更されることはありません。データベースへの接続が__init__と私は私のスレッドを殺す決算で行われPython MySQLdb無限のスレッドから新しいデータを選択

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 

は、ここに私の方法です。私は結果は同じままこのエントリのために4〜12 nbErrorsを変更するが、クエリは、この結果を得るべきでない場合

そしてここでは、ログ

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),) 

です。

私は__init__でカーソルを開こうとしましたが、閉じていないと助けになりませんでした。なにか提案を?

+0

印刷するとどうなりますか? –

+0

私はカーソルを印刷しますか? ''メモリはすべての呼び出しを変更しています – RogerFromSpace

+0

いいえ、私は意味します: 'print urls' –

答えて

0

私はself.db.commit()cursor.fetchall後の()

感謝を追加私の問題を解決しました!

関連する問題