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__でカーソルを開こうとしましたが、閉じていないと助けになりませんでした。なにか提案を?
印刷するとどうなりますか? –
私はカーソルを印刷しますか? ''メモリはすべての呼び出しを変更しています –
RogerFromSpace
いいえ、私は意味します: 'print urls' –