clacHistData.py 5.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. # -*- coding:utf-8 -*-
  2. __author__ = 'weijie'
  3. import time
  4. import datetime
  5. from StockRestPojo import StockRestPojo
  6. from StockHistPojo import StockHistPojo
  7. from dbOperation import dbOperation
  8. import db_config
  9. try:
  10. db = dbOperation(db_config.db_gupiao)
  11. stockPojoList = db.query_list("select id, code, name, list_date listDate from t_stock_base_info where 1 = 1")
  12. for stockPojo in stockPojoList:
  13. stockRestPojo = db.query_one("SELECT max( cast( now AS DECIMAL ) ) high, min( cast( now AS DECIMAL ) ) low, substring_index( group_concat( now order by `addTime` ), ',', 1 ) as `open`, substring_index( group_concat( now order by `addTime` desc ), ',', 1 ) as `close`, substring_index( group_concat( averageprice ORDER BY `addTime` DESC ), ',', 1 ) AS `averageprice`, substring_index( group_concat( volume ORDER BY `addTime` DESC ), ',', 1 ) volume, substring_index( group_concat( amount ORDER BY `addTime` DESC ), ',', 1 ) amount, substring_index( group_concat( date ORDER BY `addTime` DESC ), ',', 1 ) date FROM `data_rt_"+stockPojo['code'].replace(".", "_").lower()+"` WHERE to_days(now()) - to_days(date) = 1 and now != 0 GROUP BY date")
  14. if stockRestPojo is None:
  15. continue
  16. # db.dele("delete from data_hist_" + stockPojo['code'].replace(".", "_").lower() + " where dates = '2020/10/28'")
  17. stockHistPojo = db.query_one("select realTime, `open`,`close`,`high`,`low`,`preclose`,`average`,`change`,`pctchange`,`volume`,`highlimit`,`amount`,`turn`,`tradestatus`,`lowlimit`,`amplitude`,`tnum`,`tafactor`,`fronttafactor`,`isststock`,`isxststock` from data_hist_" + stockPojo['code'].replace(".", "_").lower() + " ORDER BY id desc limit 1")
  18. if stockHistPojo is None:
  19. continue
  20. newStockHistPojo = StockHistPojo()
  21. newStockHistPojo.open = stockRestPojo['open']
  22. newStockHistPojo.close = stockRestPojo['close']
  23. newStockHistPojo.high = stockRestPojo['high']
  24. newStockHistPojo.low = stockRestPojo['low']
  25. newStockHistPojo.average = stockRestPojo['averageprice']
  26. newStockHistPojo.volume = stockRestPojo['volume']
  27. newStockHistPojo.highlimit = stockHistPojo['highlimit']
  28. newStockHistPojo.amount = stockRestPojo['amount']
  29. newStockHistPojo.turn = stockHistPojo['turn']
  30. newStockHistPojo.tradestatus = stockHistPojo['tradestatus']
  31. newStockHistPojo.lowlimit = stockHistPojo['lowlimit']
  32. newStockHistPojo.amplitude = stockHistPojo['amplitude']
  33. newStockHistPojo.tnum = stockHistPojo['tnum']
  34. newStockHistPojo.tafactor = stockHistPojo['tafactor']
  35. newStockHistPojo.fronttafactor = stockHistPojo['fronttafactor']
  36. newStockHistPojo.isststock = stockHistPojo['isststock']
  37. newStockHistPojo.isxststock = stockHistPojo['isxststock']
  38. newStockHistPojo.preclose = stockHistPojo['close']
  39. newStockHistPojo.change = float(stockRestPojo['close']) - float(stockHistPojo['close']) # 跌涨
  40. newStockHistPojo.pctchange = float(stockRestPojo['close']) - float(stockHistPojo['close']) * 100 / float(stockHistPojo['close']) #跌涨幅
  41. dateTime = time.mktime(time.strptime(stockRestPojo['date'] + "000000", "%Y%m%d%H%M%S"))
  42. year = time.localtime(dateTime).tm_year # 获取年份
  43. yearDatTime = time.mktime(time.strptime(str(year) + "/01/01", "%Y/%m/%d"))
  44. month = time.localtime(dateTime).tm_mon # 获取月份
  45. monthDatTime = ""
  46. if 10 > month:
  47. datTime = time.mktime(time.strptime(str(year) + "/0" + str(month) + "/01", "%Y/%m/%d"))
  48. monthDatTime = int(datTime)
  49. else:
  50. datTime = time.mktime(time.strptime(str(year) + "/" + str(month) + "/01", "%Y/%m/%d"))
  51. monthDatTime = int(datTime)
  52. # 获取周
  53. wday = time.localtime(dateTime).tm_wday
  54. out_date = (datetime.datetime.fromtimestamp(dateTime) + datetime.timedelta(days=-wday)).strftime("%Y/%m/%d")
  55. weekDatTime = time.mktime(time.strptime(out_date, "%Y/%m/%d"))
  56. #获取日
  57. dayDatTime = dateTime
  58. newStockHistPojo.dateYear = str(int(yearDatTime))
  59. newStockHistPojo.dateMonth = str(int(monthDatTime))
  60. newStockHistPojo.dateWeek = str(int(weekDatTime))
  61. newStockHistPojo.dateDay = str(int(dayDatTime))
  62. # newStockHistPojo.realTime = str(int(datTime))
  63. time_tuple = time.localtime(dayDatTime) # 把时间戳转换成时间元祖
  64. result = time.strftime("%Y/%m/%d", time_tuple) # 把时间元祖转换成格式化好的时间
  65. newStockHistPojo.dates = str(result)
  66. sql = "insert into data_hist_" + stockPojo['code'].replace(".", "_").lower() + "(`realTime`,`dates`,`open`,`close`,`high`,`low`,`preclose`,`average`,`change`,`pctchange`,`volume`,`highlimit`,`amount`,`turn`,`tradestatus`,`lowlimit`,`amplitude`,`tnum`,`tafactor`,`fronttafactor`,`isststock`,`isxststock`,`date_year`,`date_month`,`date_week`) values('"+str(newStockHistPojo.dateDay)+"','"+str(newStockHistPojo.dates)+"','" + str(newStockHistPojo.open) + "','" + str(newStockHistPojo.close) + "','" + str(newStockHistPojo.high)+ "','" + str(newStockHistPojo.low) + "','" + str(newStockHistPojo.preclose) + "','" + str(newStockHistPojo.average) + "','" + str(newStockHistPojo.change) + "','" + str(newStockHistPojo.pctchange) + "','" + str(newStockHistPojo.volume) + "','" + str(newStockHistPojo.highlimit) + "','" + str(newStockHistPojo.amount) + "','" + str(newStockHistPojo.turn) + "','" + str(newStockHistPojo.tradestatus) + "','" + str(newStockHistPojo.lowlimit) + "','" + str(newStockHistPojo.amplitude) + "','" + str(newStockHistPojo.tnum) + "','" + str(newStockHistPojo.tafactor) + "','" + str(newStockHistPojo.fronttafactor) + "','" + str(newStockHistPojo.isststock) + "','" + str(newStockHistPojo.isxststock) + "','" + str(newStockHistPojo.dateYear) + "','" + str(newStockHistPojo.dateMonth) + "','" + str(newStockHistPojo.dateWeek) + "');"
  67. db.insert(sql)
  68. print("运行完成")
  69. db.close
  70. except Exception as ee:
  71. print("error >>>",ee)