Ejemplo n.º 1
0
def InsertMyStock(dboper, stockData, mytime):

    sql = "insert into mystocks(code, cashin, cashout, initnetvalue, netvalue, iorate, turnover, qrratio, initprice, price, pricerate, initchangeratio, changeratio, amountp, amountn, inittime, codealias, mtype, concept)\
                 values('%s', %0.2f, %0.2f, %0.2f, %0.2f, %0.2f, %0.2f, %0.2f, %0.2f, %0.2f, %0.4f, %0.2f, %0.2f, %0.2f, %0.2f, %s, '%s', %d, '%s')" \
        %(stockData['code'], stockData['cashin'], stockData['cashout'], stockData['initnetvalue'], stockData['netvalue'], \
          stockData['iorate'], stockData['turnover'], stockData['qrratio'], stockData['initprice'], stockData['price'], stockData['pricerate'], stockData['initchangeratio'], stockData['changeratio'], stockData['amountp'], stockData['amountn'], mytime, stockData['codealias'], stockData['mtype'], stockData['conceptstring'])

    LoggerFactory.debug("InsertMyStock", sql)

    dboper.sqlExecute(sql)
Ejemplo n.º 2
0
def InsertHisData(dboper, stockdata):

    mytime = "str_to_date('%s'," % time.strftime('%Y-%m-%d') + "'%Y-%m-%d')"

    sql = "insert into hisstocks(code, cashin, cashout, netvalue, iorate, turnover, qrratio, price, changeratio, amountp, amountn, mtime)  values('%s', %0.2f, %0.2f, %0.2f, %0.2f, %0.2f, %0.2f, %0.2f, %0.2f, %0.2f, %0.2f, %s )" \
            %(stockdata['code'], stockdata['cashin'], stockdata['cashout'], stockdata['netvalue'], stockdata['iorate'], stockdata['turnover'], stockdata['qrratio'], stockdata['price'], stockdata['changeratio'], stockdata['amountp'],stockdata['amountn'], mytime)

    LoggerFactory.debug("InsertHisData", sql)

    dboper.sqlExecute(sql)
Ejemplo n.º 3
0
def copyToFolder(filename, fromfolder, tofolder):
    try:
        if not os.path.isdir(tofolder):
            os.mkdir(tofolder)
    except OSError:
        LoggerFactory.getLogger().error("Could not create folder " + tofolder)
        return

    try:
        shutil.copy(os.path.join(fromfolder, filename), os.path.join(tofolder, filename))
    except:
        LoggerFactory.getLogger().error("Could not copy " + filename + " from " + fromfolder + " to " + tofolder)
Ejemplo n.º 4
0
def InsertHisData(code, dboper):

    realtimeData = StockDataByTX.CollectRealTimeData(code)

    if realtimeData is not None:

        LoggerFactory.info("InsertHisData", "正在处理: %s" % realtimeData['code'])

        DBDataHandle.InsertHisData(dboper, realtimeData)

    else:

        LoggerFactory.error("InsertHisData", "股票: %s 的相关信息获取失败..." % code)
Ejemplo n.º 5
0
    def CreateConnection(self):
              
        try: 
            conn = pymysql.connect(host=self.__hostname, user=self.__username, passwd=self.__password, db=self.__db, port=self.__port)
           
            return conn
        
        except Exception, e: 
            
            LoggerFactory.error("CreateConnection", "Failed to create DB connection with exception error: " + str(e))
#             self.logger.error( "Failed to create DB connection with exception error: " + str(e) )
            
            return None
Ejemplo n.º 6
0
def DonwloadAllStockBasic(FilePath):

    if os.path.isfile(FilePath):

        os.remove(FilePath)

        LoggerFactory.info(
            "DonwloadAllStockBasic",
            "Will remove the old file and refresh stock list...........")


#         logger.info("Will remove the old file and refresh stock list...........")

    try:

        LoggerFactory.info("DonwloadAllStockBasic",
                           "Starting new stock list download....")
        #         logger.info("Starting new stock list download....")

        df = ts.get_stock_basics()

        df.to_csv(FilePath, encoding='utf-8')

        LoggerFactory.info("DonwloadAllStockBasic",
                           "New stock list has been created successfully!")

    except Exception, e:

        LoggerFactory.error(
            "DonwloadAllStockBasic",
            "Creating new stock list failed by tushare, please check!!! ")

        exit
Ejemplo n.º 7
0
def HandleRTStock(dboper, stocktype, circulated=1800000):

    rtstockslist = []

    codelist_sql = ""
    sql = "select code from rtstocks"
    mytime = "str_to_date('%s'," % time.strftime(
        '%Y-%m-%d %H:%M:%S') + "'%Y-%m-%d %H:%i:%s')"

    rtstocks = dboper.queryData(sql)

    if len(rtstocks) == 0:
        InitTable.InitRTStocks(circulated, dboper)

    if len(rtstocks) > 0:

        for code in rtstocks:
            rtstockslist.append(code[0])

        codelist_sql = GetMarketSql(stocktype)

        results = dboper.queryData(codelist_sql)

        if results is not None and len(results) > 0:

            LoggerFactory.info("HandleRTStock",
                               "Starting to update rtstocks....")

            begintime = datetime.datetime.now()

            for code in results:

                if checkExist(code[0][2:8], rtstockslist):

                    LoggerFactory.debug(
                        "HandleRTStock",
                        "The stock %s already exists in the rtstocks, will perform update information"
                        % code[0])

                    threading.Thread(target=UpdateRT,
                                     args=(dboper, code[0], mytime)).start()
                    time.sleep(0.07)

                else:

                    LoggerFactory.debug(
                        "HandleRTStock",
                        "The stock %s DOES NOT exist in the rtstocks, will insert stock information!"
                        % code[0])

                    threading.Thread(target=InsertRT,
                                     args=(dboper, code[0], mytime)).start()
                    time.sleep(0.1)

            endtime = datetime.datetime.now()

            LoggerFactory.info(
                "HandleRTStock",
                "rtstocks has been updated. Spent time: %s" % str(
                    (endtime - begintime).seconds))
Ejemplo n.º 8
0
    def poolvalidate(self):

        if self.pool is not None:

            return True

        else:

            LoggerFactory.error(
                "poolvalidate",
                "Connection Pool is Null object, please check connection Pool creation!"
            )
            #             self.logger.error("Connection Pool is Null object, please check connection Pool creation!")

            return False
Ejemplo n.º 9
0
def GetStockData(dataUrl):

    r = urllib2.Request(dataUrl)

    try:

        data = urllib2.urlopen(r, data=None, timeout=2)

    except Exception, e:

        LoggerFactory.error("GetStockData",
                            "GetDataFromUrl error.... URL: %s" % dataUrl)
        #         logger.error("GetDataFromUrl error.... URL: %s"%dataUrl)

        return None
Ejemplo n.º 10
0
def InsertJJStock(dboper, code, mytime):

    realtimeData = StockDataByTX.CollectRealTimeData(code)

    if realtimeData is not None:

        #         logger.info("Insert the stock %s to jjstocks" % realtimeData['code'])

        #         DBDataHandle.InsertRTData(dboper, realtimeData, logger, mytime)
        DBDataHandle.InsertJJStock(dboper, realtimeData, mytime)

    else:

        LoggerFactory.error(
            "InsertJJStock",
            "Fetching the stock information failed. code: %s ..." % code)
Ejemplo n.º 11
0
    def CreateConnectionPool(self):
        
        try:

            pool = PooledDB.PooledDB(pymysql,mincached=self.__mincached, maxconnections=self.__maxconn, maxcached=self.__maxcached,
                                     user=self.__username, passwd=self.__password, host=self.__hostname, port=self.__port, db=self.__db,charset=self.__charset)

                               
            return pool
         
        except Exception, e:
            
            LoggerFactory.error("CreateConnectionPool", "Failed to create connection pool with exception: " + str(e))
#             self.logger.error("Failed to create connection pool with exception: " + str(e) )
              
            return None
Ejemplo n.º 12
0
def DailyHisData(dboper):

    #     logger = LoggerFactory.getLogger("DailyHisData")

    codelist = DBDataHandle.GetStockCode(dboper)

    if codelist is not None and len(codelist) > 1:

        for code in codelist:

            threading.Thread(target=InsertHisData,
                             args=(code[0], dboper)).start()
            time.sleep(0.1)

    else:

        LoggerFactory.error("DailyHisData", "股票代码信息获取失败.....")
Ejemplo n.º 13
0
def InsertJJTemp(dboper, code, mytime):

    realtimeData = StockDataByTX.CollectRealTimeData(code)

    if realtimeData is not None:

        realtimeData['codealias'] = code

        LoggerFactory.info(
            "InsertJJTemp",
            "Insert the stock %s to JJTemp" % realtimeData['code'])

        DBDataHandle.InsertJJTemp(dboper, realtimeData, mytime)

    else:

        LoggerFactory.error(
            "InsertJJTemp",
            "Fetching the stock information failed. code: %s ..." % code)
Ejemplo n.º 14
0
def upload(localSyncFolderConfig, cloudSyncFolderConfig):
    cloudConfig = CloudConfig()

    try:
        pyCloud = PyCloud(cloudConfig.username, cloudConfig.password)

        pyCloud.createfolderifnotexists(path=cloudSyncFolderConfig.folder)
        pyCloud.createfolderifnotexists(path=cloudSyncFolderConfig.tmpfolder)

        for filename in os.listdir(localSyncFolderConfig.folder):
            LoggerFactory.getLogger().info("filename=" + filename + "," + "from=" + localSyncFolderConfig.folder)
            LoggerFactory.getLogger().info("-> upload to=" + cloudSyncFolderConfig.folder);
            pyCloud.uploadfile(files=[os.path.join(localSyncFolderConfig.folder, filename)], path=cloudSyncFolderConfig.tmpfolder, progresshash='0')
            LoggerFactory.getLogger().info("-> move to=" + localSyncFolderConfig.backupfolder);
            Utils.moveToFolder(filename, localSyncFolderConfig.folder, localSyncFolderConfig.backupfolder)
            LoggerFactory.getLogger().info("-> rename from=" + cloudSyncFolderConfig.tmpfolder + "," + "to=" + cloudSyncFolderConfig.folder);
            pyCloud.renamefile(path=cloudSyncFolderConfig.tmpfolder + '/' + filename, topath=cloudSyncFolderConfig.folder + '/', filename=filename);
    except:
        LoggerFactory.getLogger().error(sys.exc_info())
Ejemplo n.º 15
0
def InitStockDB(file):

    #     logger = LoggerFactory.getLogger("InitStockDB")
    #     loggerBasicData = LoggerFactory.getLogger("GetStockBasicData")

    stocklist = StockDataByTX.GetAllStockCode(file)

    mytime = "str_to_date('%s'," % time.strftime('%Y-%m-%d') + "'%Y-%m-%d')"

    dboper = DBOperation.DBOperation()

    counter = 0

    for stock in stocklist:

        code = stock['code']

        stockBasicData = StockDataByTX.GetStockBasicData(code)

        if stockBasicData is not None:

            LoggerFactory.info("InitStockDB",
                               "正在处理:  %s" % stockBasicData['name'])

            if stockBasicData['mount'] == 0:
                status = 0
            else:
                status = 1

            sql = "insert into stocks(code, codealias, name, industry, circulated, totalstock, status, peg, lyr, mtime, area)  values('%s', '%s', '%s', '%s', %0.2f, %0.2f, %d, %0.2f, %0.2f, %s, '%s' )" \
                    % (stockBasicData['code'], stockBasicData['codealias'], stockBasicData['name'], stock['industry'], stockBasicData['circulated_stock'], \
                      stockBasicData['total_stock'], status, stockBasicData['peg'], stockBasicData['lyr'], mytime, stock['area'])

            dboper.sqlExecute(sql)

            counter = counter + 1

    LoggerFactory.info(
        "InitStockDB",
        "Stock DB initialization has completed! There're %s Stocks created into the Database!"
        % str(counter))
Ejemplo n.º 16
0
    def queryOneData(self, sql):

        conn = self.pool.connection()

        if conn is not None:

            cursor = conn.cursor()
            cursor.execute(sql)

            results = cursor.fetchone()

            cursor.close()
            conn.close()

            return results

        else:

            LoggerFactory.error("queryOneData", "Cannot get DB connection!")

            return None
Ejemplo n.º 17
0
def GetMarketSql(stocktype):

    sql = ""

    if stocktype == "sh":

        LoggerFactory.info("GetMarketSql",
                           "Updating stock information in SH marketing.....")

        sql = "select codealias from stocks where codealias like '%s' and status=1 and circulated<= %0.2f" % (
            "sh%", circulated)

    if stocktype == "sz":

        LoggerFactory.info("GetMarketSql",
                           "Updating stock information in SZ marketing.....")

        sql = "select codealias from stocks where codealias like '%s' and status=1 and circulated<= %0.2f" % (
            "sz%", circulated)

    return sql
Ejemplo n.º 18
0
def HandleJJTemp(dboper, stocktype):

    codelist_sql = GetMarketSql(stocktype)

    results = dboper.queryData(codelist_sql)

    if results is not None and len(results) > 0:

        mytime = "str_to_date('%s'," % time.strftime(
            '%Y-%m-%d %H:%M:%S') + "'%Y-%m-%d %H:%i:%s')"

        for code in results:

            LoggerFactory.debug("HandleJJTemp",
                                "Updating the stock: %s" % code[0])

            threading.Thread(target=UpdateJJTemp,
                             args=(dboper, code[0], mytime)).start()
            time.sleep(0.07)

        LoggerFactory.info("HandleJJTemp",
                           "Updating the table JJTemp has completed....")

    else:

        LoggerFactory.info(
            "HandleJJTemp",
            "There is no stock need to be updated in the pool... ")
Ejemplo n.º 19
0
def HandleJJStock(dboper, stocktype, circulated=1800000):

    #     mytime = "str_to_date('%s'," % time.strftime('%Y-%m-%d %H:%M:%S') + "'%Y-%m-%d %H:%i:%s')"
    mytime = "str_to_date('%s'," % time.strftime('%Y-%m-%d') + "'%Y-%m-%d')"

    codelist_sql = GetMarketSql(stocktype)

    results = dboper.queryData(codelist_sql)

    if results is not None and len(results) > 0:

        for code in results:

            threading.Thread(target=InsertJJStock,
                             args=(dboper, code[0], mytime)).start()

            time.sleep(0.1)

    else:

        LoggerFactory.error("HandleJJStock",
                            "There is no stock list retrieved...")
Ejemplo n.º 20
0
class ButtonHandler():
    def __init__(self, root):
        self.__root = root
        self.__frame = LoggerTestUI(root)
        self.__frame.getFileButton().configure(command=self.eventFile)
        self.__frame.getConsoleButton().configure(command=self.eventConsole)
        self.__frame.getExitButton().configure(command=self.eventExit)

        self.__factory = LoggerFactory()

    def eventFile(self):
        logger = self.__factory.getLogger(1)
        logger.log(self.__frame.getTxtText())
        self.__frame.setResultValue('The message was written to file')

    def eventConsole(self):
        logger = self.__factory.getLogger(2)
        logger.log(self.__frame.getTxtText())
        self.__frame.setResultValue('The message was written to console')

    def eventExit(self):
        self.__frame.destroy()
        self.__root.destroy()
Ejemplo n.º 21
0
def CollectRealTimeData(code):

    #     logger = LoggerFactory("CollectRealTimeData")

    stockBasicData = GetStockBasicData(code)
    stockCashData = GetStockCashData(code)
    stockBriefData = GetStockBriefData(code)

    realtimeData = {}

    if stockBasicData is not None:
        if stockCashData is not None:
            if stockBriefData is not None:

                rate = 0

                if float(stockCashData['main_out_cash']) > 0:

                    rate = round((float(stockCashData['main_in_cash']) /
                                  float(stockCashData['main_out_cash'])), 2)

                realtimeData['code'] = code[2:8]
                realtimeData['price'] = stockBriefData['price']
                realtimeData['cashin'] = stockCashData['main_in_cash']
                realtimeData['cashout'] = stockCashData['main_out_cash']
                realtimeData['netvalue'] = stockCashData['netvalue']
                realtimeData['changeratio'] = stockBriefData['changeratio']
                realtimeData['turnover'] = stockBasicData['turnover_rate']
                realtimeData['qrratio'] = stockBasicData['qrratio']
                realtimeData['iorate'] = float(rate)
                realtimeData['amountp'] = stockBriefData['amountp']
                realtimeData['amountn'] = stockBriefData['amountn']
                realtimeData['time'] = "str_to_date('%s'," % time.strftime(
                    '%Y-%m-%d') + "'%Y-%m-%d')"

                return realtimeData

            else:

                LoggerFactory.debug("CollectRealTimeData",
                                    "stockBriefData is null")
                #                 logger.debug("stockBriefData is null")

                return None
        else:

            LoggerFactory.debug("CollectRealTimeData", "stockCashData is null")
            #             logger.debug("stockCashData is null")

            return None
    else:

        LoggerFactory.debug("CollectRealTimeData", "stockBasicData is null")
        #             logger.debug("stockBasicData is null")

        return None
Ejemplo n.º 22
0
def InitJJTemp(dboper, stocktype, circulated):

    #     sql_clear = "delete from jjtemp"
    #     results = dboper.sqlExecute(sql_clear)
    results = True
    if results:

        mytime = "str_to_date('%s'," % time.strftime(
            '%Y-%m-%d %H:%M:%S') + "'%Y-%m-%d %H:%i:%s')"

        codelist_sql = GetMarketSql(stocktype)

        results = dboper.queryData(codelist_sql)

        if results is not None and len(results) > 0:

            for code in results:

                LoggerFactory.debug(
                    "InitJJTemp",
                    "The stock %s DOES NOT exist in the rtstocks, will insert stock information!"
                    % code[0])

                threading.Thread(target=InsertJJTemp,
                                 args=(dboper, code[0], mytime)).start()

                time.sleep(0.07)

            LoggerFactory.info(
                "InitJJTemp",
                "The tble JJTemp has completed initialization...")

        else:

            LoggerFactory.error("InitJJTemp",
                                "There is no stock list retrieved...")

    else:

        LoggerFactory.info("InitJJTemp", "Init JJTemp table failed!!")
Ejemplo n.º 23
0
def InitRTStocks(circulated, dboper):

    sql = "select codealias from stocks where status=1 and circulated<= %0.2f" % circulated
    mytime = "str_to_date('%s'," % time.strftime(
        '%Y-%m-%d %H:%M:%S') + "'%Y-%m-%d %H:%i:%s')"

    codelist = dboper.queryData(sql)

    if codelist is not None and len(codelist) > 0:

        clear_sql = "delete from rtstocks"
        #             clearjj_sql = "delete from rtjjstocks"

        LoggerFactory.info("InitRTStocks",
                           "Refresh old data in the rtstocks tables.....")

        dboper.sqlExecute(clear_sql)
        #             dboper.sqlExecute( clearjj_sql )

        LoggerFactory.info(
            "InitRTStocks",
            "Initialing rtstocks tables... There're %s stocks need to be handled"
            % len(codelist))

        for code in codelist:

            threading.Thread(target=InsertRT,
                             args=(dboper, code[0], mytime)).start()
            time.sleep(0.1)
    #
        LoggerFactory.info(
            "InitRTStocks",
            "The rtstocks tables initialization have been completed!")

    else:

        LoggerFactory.error("InitRTStocks", "Failed to get Stocks list.....")
Ejemplo n.º 24
0
    if opt == '-h':
        print(progname + ' -c <category -o <origin> -f <configfile>')
        sys.exit()
    elif opt in ("-c", "--category"):
        category = arg
    elif opt in ("-o", "--origin"):
        origin = arg
    elif opt in ("-f", "--config"):
        configfile = arg

ConfigUtils.init(configfile)

localSyncFolderConfig = SyncFolderConfig('local', category, 'out')
cloudSyncFolderConfig = SyncFolderConfig('cloud', category, origin)

logger = LoggerFactory.createLogger(
    "upload", os.path.join(localSyncFolderConfig.subfolder, "upload.log"))

if __name__ == "__main__":
    path = localSyncFolderConfig.folder
    event_handler = EventHandler()
    observer = Observer()
    observer.schedule(event_handler, path, recursive=True)
    observer.start()
    UploadFolder.upload(localSyncFolderConfig, cloudSyncFolderConfig)
    try:
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        observer.stop()
    observer.join()
Ejemplo n.º 25
0
import os
import platform
import re
import sys
import time
from compiler.ast import flatten
from multiprocessing.pool import ThreadPool, cpu_count

import pandas as pd
import trollius as asyncio
from trollius.coroutines import From

import LoggerFactory as Log
import johnson_cons as ct

log = Log.getLogger('commonTipss')
# log.setLevel(Log.DEBUG)

try:
    from urllib.request import urlopen, Request
except ImportError:
    from urllib2 import urlopen, Request
import requests


# def get_os_system():
#     os_sys = get_sys_system()
#     os_platform = get_sys_platform()
#     if os_sys.find('Darwin') == 0:
#         log.info("Mac:%s" % os_platform)
#         return 'mac'
Ejemplo n.º 26
0
import LoggerFactory

if __name__ == '__main__':
    logger_factory = LoggerFactory.LoggerFactory()
    logger_factory.get_log("Hello Python", "Database")
Ejemplo n.º 27
0
def UpdateMyStock(dboper):
    
#     codelist = []
    realtimeData = {}
    
    sql = "select codealias from mystocks"
    
    mytime = "str_to_date('%s'," % time.strftime('%Y-%m-%d %H:%M:%S') + "'%Y-%m-%d %H:%i:%s')"
    
    results = dboper.queryData(sql)
    
    if results is not None and len(results) > 0:
        
        LoggerFactory.info("UpdateMyStock", "Starting to update stocks in the pool...")
#         logger.info("Starting to update stocks in the pool...")
        
        for code in results: 
             
            stockBasicData = StockDataByTX.GetStockBasicData(code[0])
            stockCashData = StockDataByTX.GetStockCashData(code[0])
            stockBriefData = StockDataByTX.GetStockBriefData(code[0])
            
            if stockBasicData is not None: 
                if stockCashData is not None: 
                    if stockBriefData is not None:
                        
                        if float(stockCashData['main_out_cash']) > 0:
                            
                            rate = round((float(stockCashData['main_in_cash']) / float(stockCashData['main_out_cash'])), 2)
                            
                        else:
                            
                            rate = round((float(stockCashData['main_in_cash']) / 1), 2)
            
                        realtimeData['code'] = code[0][2:8]
                        realtimeData['price'] = stockBriefData['price']
                        realtimeData['cashin'] = stockCashData['main_in_cash']
                        realtimeData['cashout'] = stockCashData['main_out_cash']
                        realtimeData['netvalue'] = stockCashData['netvalue']
                        realtimeData['iorate'] = float(rate)
                        realtimeData['qrratio'] = stockBasicData['qrratio']
                        realtimeData['turnover'] = stockBasicData['turnover_rate']
                        realtimeData['changeratio'] = stockBriefData['changeratio']
                        realtimeData['amountp'] = stockBriefData['amountp']
                        realtimeData['amountn'] = stockBriefData['amountn']
                        
                        LoggerFactory.info("UpdateMyStock", "Starting to update stock: %s" %stockBasicData['name'])
                        
                        DBDataHandle.UpdateMyStock(dboper, realtimeData, mytime)
                    
                    else:
                        
                        LoggerFactory.error("UpdateMyStock", "Data collection stockBriefData is Null. code: %s"%code[0])   
                
                else:
                    
                    LoggerFactory.error("UpdateMyStock", "Data collection stockCashData is Null. code: %s"%code[0])
                    
            else: 
                
                LoggerFactory.error("UpdateMyStock", "Data collection stockBasicData is Null. code: %s"%code[0])
    else: 
        
        LoggerFactory.info("UpdateMyStock", "There is no Stocks in the pool yet....Waiting for auto select!")  
Ejemplo n.º 28
0
if __name__=="__main__":
    
    dboper = DBOperation.DBOperation()        

#     UpdateMyStock(dboper)
#     exit 
    
    while True:
          
        mytime = int(time.strftime("%H%M%S"))      
        
        if( 92000 <= mytime <= 113030 ) or ( 130000 <= mytime <= 150030 ):
            
    
#             threading.Thread(target=UpdateMyStock, args=(dboper)).start()
#             time.sleep(0.5)
            UpdateMyStock(dboper)
        
        elif( mytime < 90000 or mytime > 150100):
                
            LoggerFactory.info("UpdateMyStock", "Out of trade time now...exit!")
               
            break
         
        else: 
               
            LoggerFactory.info("UpdateMyStock", "It's not in trade time yet, waiting for market to open!!")
            time.sleep(30)
        
Ejemplo n.º 29
0
def GetJJBasicData(dboper):

    mytimequery = "str_to_date('%s'," % time.strftime(
        '%Y-%m-%d') + "'%Y-%m-%d')"

    #     mytimequery = "str_to_date('2018-03-30', '%Y-%m-%d')"

    #     sql_jjData = "select a.code, a.codealias, a.name, a.industry, b.initprice, b.price, c.cashin, c.cashout, c.netvalue, c.turnover, c.changeratio, c.amountp, c.amountn \
    #                  from stocks a, jjtemp b, jjstocks c where a.code = b.code and b.code = c.code and b.mtime >=%s \
    #                  and c.mtime >=%s and b.price > b.initprice and b.initprice >0 " % (mytimequery, mytimequery)

    sql_jjData = "select a.code, a.codealias, a.name, a.industry, b.cashin, b.cashout, b.netvalue, b.turnover, b.changeratio, b.amountp, b.amountn \
             from stocks a, jjstocks b where a.code = b.code and b.mtime >=%s" % (
        mytimequery)

    sql_mystock = "select code from mystocks where mtype=0"

    LoggerFactory.debug("sql_jjData", sql_jjData)
    LoggerFactory.debug("sql_mystock", sql_mystock)

    jjDataCol = dboper.queryData(sql_jjData)
    myStockDataCol = dboper.queryData(sql_mystock)

    stockDataList = []
    codelist = []

    if myStockDataCol is not None:

        for data in myStockDataCol:

            codelist.append(data[0])

    if jjDataCol is not None and len(jjDataCol) > 0:

        for jjdata in jjDataCol:

            if checkExist(jjdata[0], codelist):

                LoggerFactory.debug(
                    "SelectJJStock_rule1",
                    "%s This stock already exists in the table mystocks..." %
                    data[0])

            else:
                stockData = {}

                stockData['code'] = jjdata[0]
                stockData['codealias'] = jjdata[1]
                stockData['name'] = jjdata[2]
                stockData['industry'] = jjdata[3]
                stockData['cashin'] = jjdata[4]
                stockData['cashout'] = jjdata[5]
                stockData['netvalue'] = jjdata[6]
                stockData['turnover'] = jjdata[7]
                stockData['changeratio'] = jjdata[8]
                stockData['amountp'] = jjdata[9]
                stockData['amountn'] = jjdata[10]

                conceptstring = GetStockConcept(dboper, stockData['code'])

                if conceptstring is not None:
                    stockData['conceptstring'] = conceptstring
                else:
                    stockData['conceptstring'] = "None"

                stockDataList.append(stockData)

        return stockDataList

    else:

        LoggerFactory.error("SelectJJStock_rule1",
                            "There is no data selected from rtstocks")

        return None
Ejemplo n.º 30
0
                conn.close()

                return True

            except Exception, e:

                conn.rollback()

                LoggerFactory.error(
                    "sqlExecute", "SQL statement execution failed!" + "\n" +
                    "Error message: " + str(e) + "\n" + sql)

                return False
        else:

            LoggerFactory.error("sqlExecute", "Cannot get DB connection!")

            return False

    def queryData(self, sql):

        conn = self.pool.connection()

        if conn is not None:

            LoggerFactory.debug("queryData", sql)
            #             self.logger.debug( sql )

            cursor = conn.cursor()
            cursor.execute(sql)
Ejemplo n.º 31
0
def download(localSyncFolderConfig, cloudSyncFolderConfig, backup):
    cloudConfig = CloudConfig()

    try:
        pyCloud = PyCloud(cloudConfig.username, cloudConfig.password)

        folderinfo = pyCloud.createfolderifnotexists(
            path=cloudSyncFolderConfig.folder)
        listFolderinfo = pyCloud.listfolder(path=cloudSyncFolderConfig.folder)

        metadata = listFolderinfo["metadata"]
        contents = metadata["contents"]
        backupfolder = os.path.join(localSyncFolderConfig.backupfolder,
                                    Utils.timestamp())
        for file in contents:
            if (not file["isfolder"]):
                filename = file["name"]
                LoggerFactory.getLogger().info("filename=" + filename + "," +
                                               "from=" +
                                               cloudSyncFolderConfig.folder)
                filelink = pyCloud.getfilelink(
                    path=cloudSyncFolderConfig.folder + "/" + filename)
                downloadlink = 'https://' + filelink["hosts"][0] + filelink[
                    "path"]
                LoggerFactory.getLogger().info("-> download to=" +
                                               localSyncFolderConfig.tmpfolder)
                urllib.request.urlretrieve(
                    downloadlink,
                    os.path.join(localSyncFolderConfig.tmpfolder, filename))
                if backup:
                    LoggerFactory.getLogger().info(
                        "-> backup from=" + localSyncFolderConfig.tmpfolder +
                        "," + "to=" + backupfolder)
                    Utils.copyToFolder(filename,
                                       localSyncFolderConfig.tmpfolder,
                                       backupfolder)
                LoggerFactory.getLogger().info(
                    "-> rename from=" + localSyncFolderConfig.tmpfolder + "," +
                    "to=" + localSyncFolderConfig.folder)
                os.rename(
                    os.path.join(localSyncFolderConfig.tmpfolder, filename),
                    os.path.join(localSyncFolderConfig.folder, filename))
                LoggerFactory.getLogger().info("-> delete from=" +
                                               cloudSyncFolderConfig.folder)
                pyCloud.deletefile(path=cloudSyncFolderConfig.folder + "/" +
                                   filename)
    except:
        LoggerFactory.getLogger().error(sys.exc_info())