def trade_dates(ticker, min_date=None, max_date=None, as_dtime=True): """ Get a list of trade days for provided ticker """ db = DB() query = 'select distinct(date(`dtime`)) as `d` from `quotes` where `ticker` = "%s" ' % ticker if min_date is not None or max_date is not None: if min_date is not None and not isinstance(min_date, datetime.datetime): min_date = datetime.datetime.combine(min_date, datetime.time(0, 0)) if max_date is not None and not isinstance(max_date, datetime.datetime): max_date = datetime.datetime.combine(max_date, datetime.time(23, 59)) if min_date is not None and max_date is not None: query += 'and `dtime` between "%s" and "%s" ' % (min_date, max_date) elif min_date is not None: query += 'and `dtime` >= "%s" ' % min_date else: query += 'and `dtime` <= "%s"' % max_date query += 'order by `d` asc' db.cursor.execute(query) midnight = datetime.time(0, 0) for date in db.cursor: if as_dtime: yield datetime.datetime.combine(date[0], midnight) else: yield date[0] db.close() pass
all_data = db.query(SQLMgr.get_all_kline_info(Tools.get_today_str())) if all_data: for row in all_data: task_queue.put(row) print all_data worker_thread_num = 4 worker_thread_list = [] for i in range(worker_thread_num): t = threading.Thread(target=worker, args=(task_queue, result_queue)) worker_thread_list.append(t) database_thread = threading.Thread(target=db_writer, args=(result_queue, db)) database_thread.setDaemon(True) database_thread.start() # for t in worker_thread_list: t.start() for t in worker_thread_list: t.join() database_thread.join() logger.info("done") except Exception as e: print e finally: db.close()