TempIndexHistData.py 38 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582
  1. # -*- coding:utf-8 -*-
  2. __author__ = 'weijie'
  3. from EmQuantAPI import *
  4. import datetime
  5. import time
  6. import traceback
  7. from StockPojo import StockPojo
  8. from StockHistPojo import StockHistPojo
  9. from dbOperation import dbOperation
  10. import pandas as pd
  11. import json
  12. import array
  13. import db_config
  14. class TempIndexHistData:
  15. def toGet1(self):
  16. try:
  17. print("开始000001.SH")
  18. getDataTime = time.strftime('%Y-%m-%d',time.localtime(time.time()))
  19. sql = "select dates dates from data_hist_000001_sh order by realTime desc limit 1"
  20. db = dbOperation(db_config.db_gupiao)
  21. dates = db.query_one(sql)
  22. db.close()
  23. if dates is not None :
  24. startDate = str(dates['dates'].replace("/", "-"))
  25. dd = datetime.datetime.strptime(startDate, "%Y-%m-%d")
  26. dd = (dd + datetime.timedelta(days=1)).strftime("%Y-%m-%d")
  27. startDate = dd
  28. else:
  29. return
  30. data = c.csd(
  31. '000001.SH',
  32. "OPEN,CLOSE,HIGH,LOW,PRECLOSE,CHANGE,PCTCHANGE,VOLUME,AMOUNT,TURN,AMPLITUDE",
  33. startDate,
  34. getDataTime,
  35. "Period=1,adjustflag=1,curtype=1,Ispandas=1")
  36. print(data)
  37. data.reset_index(inplace=True)
  38. jsonData = data.to_json()
  39. text = json.loads(jsonData)
  40. stockHistPojoList = []
  41. for i in range(len(text['CODES'])):
  42. stockHistPojo = StockHistPojo()
  43. stockHistPojo.codes = text['CODES'][str(i)].replace(".", "_")
  44. if "None".strip() == str(text['OPEN'][str(i)]).strip():
  45. continue
  46. stockHistPojo.open = text['OPEN'][str(i)]
  47. stockHistPojo.close = text['CLOSE'][str(i)]
  48. stockHistPojo.high = text['HIGH'][str(i)]
  49. stockHistPojo.low = text['LOW'][str(i)]
  50. stockHistPojo.preclose = text['PRECLOSE'][str(i)]
  51. stockHistPojo.average = "0"
  52. stockHistPojo.change = text['CHANGE'][str(i)]
  53. stockHistPojo.pctchange = text['PCTCHANGE'][str(i)]
  54. stockHistPojo.volume = text['VOLUME'][str(i)]
  55. stockHistPojo.highlimit = "0"
  56. stockHistPojo.amount = text['AMOUNT'][str(i)]
  57. stockHistPojo.turn = text['TURN'][str(i)]
  58. stockHistPojo.tradestatus = "0"
  59. stockHistPojo.lowlimit = "0"
  60. stockHistPojo.amplitude = text['AMPLITUDE'][str(i)]
  61. stockHistPojo.tnum = "0"
  62. stockHistPojo.tafactor = "0"
  63. stockHistPojo.fronttafactor = "0"
  64. stockHistPojo.isststock = "0"
  65. stockHistPojo.isxststock = "0"
  66. stockHistPojo.dates = text['DATES'][str(i)]
  67. datTime = time.mktime(time.strptime(stockHistPojo.dates, "%Y/%m/%d"))
  68. year = time.localtime(datTime).tm_year # 获取年份
  69. yearDatTime = time.mktime(time.strptime(str(year) + "/01/01", "%Y/%m/%d"))
  70. month = time.localtime(datTime).tm_mon # 获取月份
  71. monthDatTime = ""
  72. if 10 > month:
  73. datTime = time.mktime(time.strptime(str(year) + "/0" + str(month) + "/01", "%Y/%m/%d"))
  74. monthDatTime = int(datTime)
  75. else:
  76. datTime = time.mktime(time.strptime(str(year) + "/" + str(month) + "/01", "%Y/%m/%d"))
  77. monthDatTime = int(datTime)
  78. weekDatTime = time.mktime(time.strptime(stockHistPojo.dates, "%Y/%m/%d"))
  79. wday = time.localtime(weekDatTime).tm_wday # 获取周
  80. dt = datetime.datetime.strptime(stockHistPojo.dates, "%Y/%m/%d")
  81. out_date = (dt + datetime.timedelta(days=-wday)).strftime("%Y/%m/%d")
  82. weekDatTime1 = time.mktime(time.strptime(out_date, "%Y/%m/%d"))
  83. #获取日
  84. dayDatTime = time.mktime(time.strptime(stockHistPojo.dates, "%Y/%m/%d"))
  85. stockHistPojo.dateYear = str(int(yearDatTime))
  86. stockHistPojo.dateMonth = str(int(monthDatTime))
  87. stockHistPojo.dateWeek = str(int(weekDatTime1))
  88. stockHistPojo.dateDay = str(int(dayDatTime))
  89. stockHistPojoList.append(stockHistPojo)
  90. i = 0
  91. key = "`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`"
  92. # 批量插入 每次插入500
  93. db = dbOperation(db_config.db_gupiao)
  94. while True :
  95. vlues = ""
  96. # print(i)
  97. # 如果数组数量大于500 截取前500个
  98. if len(stockHistPojoList) - i > 500 :
  99. # stockPojoList[i : 500] 等于java subList(i, 500)
  100. for stockHistPojo in stockHistPojoList[i : 500 + i]:
  101. vlues = vlues + "('"+str(stockHistPojo.dateDay)+"','"+str(stockHistPojo.dates)+"','" + str(stockHistPojo.open) + "','" + str(stockHistPojo.close) + "','" + str(stockHistPojo.high)+ "','" + str(stockHistPojo.low) + "','" + str(stockHistPojo.preclose) + "','" + str(stockHistPojo.average) + "','" + str(stockHistPojo.change) + "','" + str(stockHistPojo.pctchange) + "','" + str(stockHistPojo.volume) + "','" + str(stockHistPojo.highlimit) + "','" + str(stockHistPojo.amount) + "','" + str(stockHistPojo.turn) + "','" + str(stockHistPojo.tradestatus) + "','" + str(stockHistPojo.lowlimit) + "','" + str(stockHistPojo.amplitude) + "','" + str(stockHistPojo.tnum) + "','" + str(stockHistPojo.tafactor) + "','" + str(stockHistPojo.fronttafactor) + "','" + str(stockHistPojo.isststock) + "','" + str(stockHistPojo.isxststock) + "','" + str(stockHistPojo.dateYear) + "','" + str(stockHistPojo.dateMonth) + "','" + str(stockHistPojo.dateWeek) + "'),"
  102. vlues = vlues[:-1]
  103. db.batchInsert("data_hist_000001_sh", key, vlues)
  104. i = i + 500
  105. else :
  106. # 如果数量小于500 并且不为数量不大于标记变量
  107. if len(stockHistPojoList) > i :
  108. for stockHistPojo in stockHistPojoList[i : len(stockHistPojoList)]:
  109. vlues = vlues + "('"+str(stockHistPojo.dateDay)+"','"+str(stockHistPojo.dates)+"','" + str(stockHistPojo.open) + "','" + str(stockHistPojo.close) + "','" + str(stockHistPojo.high)+ "','" + str(stockHistPojo.low) + "','" + str(stockHistPojo.preclose) + "','" + str(stockHistPojo.average) + "','" + str(stockHistPojo.change) + "','" + str(stockHistPojo.pctchange) + "','" + str(stockHistPojo.volume) + "','" + str(stockHistPojo.highlimit) + "','" + str(stockHistPojo.amount) + "','" + str(stockHistPojo.turn) + "','" + str(stockHistPojo.tradestatus) + "','" + str(stockHistPojo.lowlimit) + "','" + str(stockHistPojo.amplitude) + "','" + str(stockHistPojo.tnum) + "','" + str(stockHistPojo.tafactor) + "','" + str(stockHistPojo.fronttafactor) + "','" + str(stockHistPojo.isststock) + "','" + str(stockHistPojo.isxststock) + "','" + str(stockHistPojo.dateYear) + "','" + str(stockHistPojo.dateMonth) + "','" + str(stockHistPojo.dateWeek) + "'),"
  110. vlues = vlues[:-1]
  111. db.batchInsert("data_hist_000001_sh", key, vlues)
  112. break
  113. db.close()
  114. except Exception as ee:
  115. print("error >>>",ee)
  116. traceback.print_exc()
  117. else:
  118. print("demo end")
  119. def toGet2(self):
  120. try:
  121. print("开始399001.SZ")
  122. getDataTime = time.strftime('%Y-%m-%d',time.localtime(time.time()))
  123. sql = "select dates dates from data_hist_399001_sz order by realTime desc limit 1"
  124. db = dbOperation(db_config.db_gupiao)
  125. dates = db.query_one(sql)
  126. db.close()
  127. if dates is not None :
  128. startDate = str(dates['dates'].replace("/", "-"))
  129. dd = datetime.datetime.strptime(startDate, "%Y-%m-%d")
  130. dd = (dd + datetime.timedelta(days=1)).strftime("%Y-%m-%d")
  131. startDate = dd
  132. else:
  133. return
  134. data = c.csd(
  135. '399001.SZ',
  136. "OPEN,CLOSE,HIGH,LOW,PRECLOSE,CHANGE,PCTCHANGE,VOLUME,AMOUNT,TURN,AMPLITUDE",
  137. startDate,
  138. getDataTime,
  139. "Period=1,adjustflag=1,curtype=1,Ispandas=1")
  140. print(data)
  141. data.reset_index(inplace=True)
  142. jsonData = data.to_json()
  143. text = json.loads(jsonData)
  144. stockHistPojoList = []
  145. for i in range(len(text['CODES'])):
  146. stockHistPojo = StockHistPojo()
  147. stockHistPojo.codes = text['CODES'][str(i)].replace(".", "_")
  148. if "None".strip() == str(text['OPEN'][str(i)]).strip():
  149. continue
  150. stockHistPojo.open = text['OPEN'][str(i)]
  151. stockHistPojo.close = text['CLOSE'][str(i)]
  152. stockHistPojo.high = text['HIGH'][str(i)]
  153. stockHistPojo.low = text['LOW'][str(i)]
  154. stockHistPojo.preclose = text['PRECLOSE'][str(i)]
  155. stockHistPojo.average = "0"
  156. stockHistPojo.change = text['CHANGE'][str(i)]
  157. stockHistPojo.pctchange = text['PCTCHANGE'][str(i)]
  158. stockHistPojo.volume = text['VOLUME'][str(i)]
  159. stockHistPojo.highlimit = "0"
  160. stockHistPojo.amount = text['AMOUNT'][str(i)]
  161. stockHistPojo.turn = text['TURN'][str(i)]
  162. stockHistPojo.tradestatus = "0"
  163. stockHistPojo.lowlimit = "0"
  164. stockHistPojo.amplitude = text['AMPLITUDE'][str(i)]
  165. stockHistPojo.tnum = "0"
  166. stockHistPojo.tafactor = "0"
  167. stockHistPojo.fronttafactor = "0"
  168. stockHistPojo.isststock = "0"
  169. stockHistPojo.isxststock = "0"
  170. stockHistPojo.dates = text['DATES'][str(i)]
  171. datTime = time.mktime(time.strptime(stockHistPojo.dates, "%Y/%m/%d"))
  172. year = time.localtime(datTime).tm_year # 获取年份
  173. yearDatTime = time.mktime(time.strptime(str(year) + "/01/01", "%Y/%m/%d"))
  174. month = time.localtime(datTime).tm_mon # 获取月份
  175. monthDatTime = ""
  176. if 10 > month:
  177. datTime = time.mktime(time.strptime(str(year) + "/0" + str(month) + "/01", "%Y/%m/%d"))
  178. monthDatTime = int(datTime)
  179. else:
  180. datTime = time.mktime(time.strptime(str(year) + "/" + str(month) + "/01", "%Y/%m/%d"))
  181. monthDatTime = int(datTime)
  182. weekDatTime = time.mktime(time.strptime(stockHistPojo.dates, "%Y/%m/%d"))
  183. wday = time.localtime(weekDatTime).tm_wday # 获取周
  184. dt = datetime.datetime.strptime(stockHistPojo.dates, "%Y/%m/%d")
  185. out_date = (dt + datetime.timedelta(days=-wday)).strftime("%Y/%m/%d")
  186. weekDatTime1 = time.mktime(time.strptime(out_date, "%Y/%m/%d"))
  187. #获取日
  188. dayDatTime = time.mktime(time.strptime(stockHistPojo.dates, "%Y/%m/%d"))
  189. stockHistPojo.dateYear = str(int(yearDatTime))
  190. stockHistPojo.dateMonth = str(int(monthDatTime))
  191. stockHistPojo.dateWeek = str(int(weekDatTime1))
  192. stockHistPojo.dateDay = str(int(dayDatTime))
  193. stockHistPojoList.append(stockHistPojo)
  194. i = 0
  195. key = "`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`"
  196. # 批量插入 每次插入500
  197. db = dbOperation(db_config.db_gupiao)
  198. while True :
  199. vlues = ""
  200. # print(i)
  201. # 如果数组数量大于500 截取前500个
  202. if len(stockHistPojoList) - i > 500 :
  203. # stockPojoList[i : 500] 等于java subList(i, 500)
  204. for stockHistPojo in stockHistPojoList[i : 500 + i]:
  205. vlues = vlues + "('"+str(stockHistPojo.dateDay)+"','"+str(stockHistPojo.dates)+"','" + str(stockHistPojo.open) + "','" + str(stockHistPojo.close) + "','" + str(stockHistPojo.high)+ "','" + str(stockHistPojo.low) + "','" + str(stockHistPojo.preclose) + "','" + str(stockHistPojo.average) + "','" + str(stockHistPojo.change) + "','" + str(stockHistPojo.pctchange) + "','" + str(stockHistPojo.volume) + "','" + str(stockHistPojo.highlimit) + "','" + str(stockHistPojo.amount) + "','" + str(stockHistPojo.turn) + "','" + str(stockHistPojo.tradestatus) + "','" + str(stockHistPojo.lowlimit) + "','" + str(stockHistPojo.amplitude) + "','" + str(stockHistPojo.tnum) + "','" + str(stockHistPojo.tafactor) + "','" + str(stockHistPojo.fronttafactor) + "','" + str(stockHistPojo.isststock) + "','" + str(stockHistPojo.isxststock) + "','" + str(stockHistPojo.dateYear) + "','" + str(stockHistPojo.dateMonth) + "','" + str(stockHistPojo.dateWeek) + "'),"
  206. vlues = vlues[:-1]
  207. db.batchInsert("data_hist_399001_sz", key, vlues)
  208. i = i + 500
  209. else :
  210. # 如果数量小于500 并且不为数量不大于标记变量
  211. if len(stockHistPojoList) > i :
  212. for stockHistPojo in stockHistPojoList[i : len(stockHistPojoList)]:
  213. vlues = vlues + "('"+str(stockHistPojo.dateDay)+"','"+str(stockHistPojo.dates)+"','" + str(stockHistPojo.open) + "','" + str(stockHistPojo.close) + "','" + str(stockHistPojo.high)+ "','" + str(stockHistPojo.low) + "','" + str(stockHistPojo.preclose) + "','" + str(stockHistPojo.average) + "','" + str(stockHistPojo.change) + "','" + str(stockHistPojo.pctchange) + "','" + str(stockHistPojo.volume) + "','" + str(stockHistPojo.highlimit) + "','" + str(stockHistPojo.amount) + "','" + str(stockHistPojo.turn) + "','" + str(stockHistPojo.tradestatus) + "','" + str(stockHistPojo.lowlimit) + "','" + str(stockHistPojo.amplitude) + "','" + str(stockHistPojo.tnum) + "','" + str(stockHistPojo.tafactor) + "','" + str(stockHistPojo.fronttafactor) + "','" + str(stockHistPojo.isststock) + "','" + str(stockHistPojo.isxststock) + "','" + str(stockHistPojo.dateYear) + "','" + str(stockHistPojo.dateMonth) + "','" + str(stockHistPojo.dateWeek) + "'),"
  214. vlues = vlues[:-1]
  215. db.batchInsert("data_hist_399001_sz", key, vlues)
  216. break
  217. db.close()
  218. except Exception as ee:
  219. print("error >>>",ee)
  220. traceback.print_exc()
  221. else:
  222. print("demo end")
  223. def toGet3(self):
  224. try:
  225. print("开始399006.SZ")
  226. getDataTime = time.strftime('%Y-%m-%d',time.localtime(time.time()))
  227. sql = "select dates dates from data_hist_399006_sz order by realTime desc limit 1"
  228. db = dbOperation(db_config.db_gupiao)
  229. dates = db.query_one(sql)
  230. db.close()
  231. if dates is not None :
  232. startDate = str(dates['dates'].replace("/", "-"))
  233. dd = datetime.datetime.strptime(startDate, "%Y-%m-%d")
  234. dd = (dd + datetime.timedelta(days=1)).strftime("%Y-%m-%d")
  235. startDate = dd
  236. data = c.csd(
  237. '399006.SZ',
  238. "OPEN,CLOSE,HIGH,LOW,PRECLOSE,CHANGE,PCTCHANGE,VOLUME,AMOUNT,TURN,AMPLITUDE",
  239. startDate,
  240. getDataTime,
  241. "Period=1,adjustflag=1,curtype=1,Ispandas=1")
  242. print(data)
  243. data.reset_index(inplace=True)
  244. jsonData = data.to_json()
  245. text = json.loads(jsonData)
  246. stockHistPojoList = []
  247. for i in range(len(text['CODES'])):
  248. stockHistPojo = StockHistPojo()
  249. stockHistPojo.codes = text['CODES'][str(i)].replace(".", "_")
  250. if "None".strip() == str(text['OPEN'][str(i)]).strip():
  251. continue
  252. stockHistPojo.open = text['OPEN'][str(i)]
  253. stockHistPojo.close = text['CLOSE'][str(i)]
  254. stockHistPojo.high = text['HIGH'][str(i)]
  255. stockHistPojo.low = text['LOW'][str(i)]
  256. stockHistPojo.preclose = text['PRECLOSE'][str(i)]
  257. stockHistPojo.average = "0"
  258. stockHistPojo.change = text['CHANGE'][str(i)]
  259. stockHistPojo.pctchange = text['PCTCHANGE'][str(i)]
  260. stockHistPojo.volume = text['VOLUME'][str(i)]
  261. stockHistPojo.highlimit = "0"
  262. stockHistPojo.amount = text['AMOUNT'][str(i)]
  263. stockHistPojo.turn = text['TURN'][str(i)]
  264. stockHistPojo.tradestatus = "0"
  265. stockHistPojo.lowlimit = "0"
  266. stockHistPojo.amplitude = text['AMPLITUDE'][str(i)]
  267. stockHistPojo.tnum = "0"
  268. stockHistPojo.tafactor = "0"
  269. stockHistPojo.fronttafactor = "0"
  270. stockHistPojo.isststock = "0"
  271. stockHistPojo.isxststock = "0"
  272. stockHistPojo.dates = text['DATES'][str(i)]
  273. datTime = time.mktime(time.strptime(stockHistPojo.dates, "%Y/%m/%d"))
  274. year = time.localtime(datTime).tm_year # 获取年份
  275. yearDatTime = time.mktime(time.strptime(str(year) + "/01/01", "%Y/%m/%d"))
  276. month = time.localtime(datTime).tm_mon # 获取月份
  277. monthDatTime = ""
  278. if 10 > month:
  279. datTime = time.mktime(time.strptime(str(year) + "/0" + str(month) + "/01", "%Y/%m/%d"))
  280. monthDatTime = int(datTime)
  281. else:
  282. datTime = time.mktime(time.strptime(str(year) + "/" + str(month) + "/01", "%Y/%m/%d"))
  283. monthDatTime = int(datTime)
  284. weekDatTime = time.mktime(time.strptime(stockHistPojo.dates, "%Y/%m/%d"))
  285. wday = time.localtime(weekDatTime).tm_wday # 获取周
  286. dt = datetime.datetime.strptime(stockHistPojo.dates, "%Y/%m/%d")
  287. out_date = (dt + datetime.timedelta(days=-wday)).strftime("%Y/%m/%d")
  288. weekDatTime1 = time.mktime(time.strptime(out_date, "%Y/%m/%d"))
  289. #获取日
  290. dayDatTime = time.mktime(time.strptime(stockHistPojo.dates, "%Y/%m/%d"))
  291. stockHistPojo.dateYear = str(int(yearDatTime))
  292. stockHistPojo.dateMonth = str(int(monthDatTime))
  293. stockHistPojo.dateWeek = str(int(weekDatTime1))
  294. stockHistPojo.dateDay = str(int(dayDatTime))
  295. stockHistPojoList.append(stockHistPojo)
  296. i = 0
  297. key = "`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`"
  298. # 批量插入 每次插入500
  299. db = dbOperation(db_config.db_gupiao)
  300. while True :
  301. vlues = ""
  302. # print(i)
  303. # 如果数组数量大于500 截取前500个
  304. if len(stockHistPojoList) - i > 500 :
  305. # stockPojoList[i : 500] 等于java subList(i, 500)
  306. for stockHistPojo in stockHistPojoList[i : 500 + i]:
  307. vlues = vlues + "('"+str(stockHistPojo.dateDay)+"','"+str(stockHistPojo.dates)+"','" + str(stockHistPojo.open) + "','" + str(stockHistPojo.close) + "','" + str(stockHistPojo.high)+ "','" + str(stockHistPojo.low) + "','" + str(stockHistPojo.preclose) + "','" + str(stockHistPojo.average) + "','" + str(stockHistPojo.change) + "','" + str(stockHistPojo.pctchange) + "','" + str(stockHistPojo.volume) + "','" + str(stockHistPojo.highlimit) + "','" + str(stockHistPojo.amount) + "','" + str(stockHistPojo.turn) + "','" + str(stockHistPojo.tradestatus) + "','" + str(stockHistPojo.lowlimit) + "','" + str(stockHistPojo.amplitude) + "','" + str(stockHistPojo.tnum) + "','" + str(stockHistPojo.tafactor) + "','" + str(stockHistPojo.fronttafactor) + "','" + str(stockHistPojo.isststock) + "','" + str(stockHistPojo.isxststock) + "','" + str(stockHistPojo.dateYear) + "','" + str(stockHistPojo.dateMonth) + "','" + str(stockHistPojo.dateWeek) + "'),"
  308. vlues = vlues[:-1]
  309. db.batchInsert("data_hist_399006_sz", key, vlues)
  310. i = i + 500
  311. else :
  312. # 如果数量小于500 并且不为数量不大于标记变量
  313. if len(stockHistPojoList) > i :
  314. for stockHistPojo in stockHistPojoList[i : len(stockHistPojoList)]:
  315. vlues = vlues + "('"+str(stockHistPojo.dateDay)+"','"+str(stockHistPojo.dates)+"','" + str(stockHistPojo.open) + "','" + str(stockHistPojo.close) + "','" + str(stockHistPojo.high)+ "','" + str(stockHistPojo.low) + "','" + str(stockHistPojo.preclose) + "','" + str(stockHistPojo.average) + "','" + str(stockHistPojo.change) + "','" + str(stockHistPojo.pctchange) + "','" + str(stockHistPojo.volume) + "','" + str(stockHistPojo.highlimit) + "','" + str(stockHistPojo.amount) + "','" + str(stockHistPojo.turn) + "','" + str(stockHistPojo.tradestatus) + "','" + str(stockHistPojo.lowlimit) + "','" + str(stockHistPojo.amplitude) + "','" + str(stockHistPojo.tnum) + "','" + str(stockHistPojo.tafactor) + "','" + str(stockHistPojo.fronttafactor) + "','" + str(stockHistPojo.isststock) + "','" + str(stockHistPojo.isxststock) + "','" + str(stockHistPojo.dateYear) + "','" + str(stockHistPojo.dateMonth) + "','" + str(stockHistPojo.dateWeek) + "'),"
  316. vlues = vlues[:-1]
  317. db.batchInsert("data_hist_399006_sz", key, vlues)
  318. break
  319. db.close()
  320. except Exception as ee:
  321. print("error >>>",ee)
  322. traceback.print_exc()
  323. else:
  324. print("demo end")
  325. def toGet4(self):
  326. try:
  327. print("US30USD.FX")
  328. getDataTime = time.strftime('%Y-%m-%d',time.localtime(time.time()))
  329. sql = "select dates dates from data_hist_us30usd_fx order by realTime desc limit 1"
  330. db = dbOperation(db_config.db_gupiao)
  331. dates = db.query_one(sql)
  332. db.close()
  333. if dates is not None :
  334. startDate = str(dates['dates'].replace("/", "-"))
  335. dd = datetime.datetime.strptime(startDate, "%Y-%m-%d")
  336. dd = (dd + datetime.timedelta(days=1)).strftime("%Y-%m-%d")
  337. startDate = dd
  338. else:
  339. startDate = '1991-01-01'
  340. data = c.csd(
  341. 'US30USD.FX',
  342. "OPEN,CLOSE,HIGH,LOW,PRECLOSE,CHANGE,PCTCHANGE",
  343. startDate,
  344. getDataTime,
  345. "Period=1,adjustflag=1,curtype=1,Ispandas=1")
  346. print(data)
  347. data.reset_index(inplace=True)
  348. jsonData = data.to_json()
  349. text = json.loads(jsonData)
  350. stockHistPojoList = []
  351. for i in range(len(text['CODES'])):
  352. stockHistPojo = StockHistPojo()
  353. stockHistPojo.codes = text['CODES'][str(i)].replace(".", "_")
  354. if "None".strip() == str(text['OPEN'][str(i)]).strip():
  355. continue
  356. stockHistPojo.open = text['OPEN'][str(i)]
  357. stockHistPojo.close = text['CLOSE'][str(i)]
  358. stockHistPojo.high = text['HIGH'][str(i)]
  359. stockHistPojo.low = text['LOW'][str(i)]
  360. stockHistPojo.preclose = text['PRECLOSE'][str(i)]
  361. stockHistPojo.average = "0"
  362. stockHistPojo.change = text['CHANGE'][str(i)]
  363. stockHistPojo.pctchange = text['PCTCHANGE'][str(i)]
  364. stockHistPojo.volume = "0"
  365. stockHistPojo.highlimit = "0"
  366. stockHistPojo.amount = "0"
  367. stockHistPojo.turn = "0"
  368. stockHistPojo.tradestatus = "0"
  369. stockHistPojo.lowlimit = "0"
  370. stockHistPojo.amplitude = "0"
  371. stockHistPojo.tnum = "0"
  372. stockHistPojo.tafactor = "0"
  373. stockHistPojo.fronttafactor = "0"
  374. stockHistPojo.isststock = "0"
  375. stockHistPojo.isxststock = "0"
  376. stockHistPojo.dates = text['DATES'][str(i)]
  377. datTime = time.mktime(time.strptime(stockHistPojo.dates, "%Y/%m/%d"))
  378. year = time.localtime(datTime).tm_year # 获取年份
  379. yearDatTime = time.mktime(time.strptime(str(year) + "/01/01", "%Y/%m/%d"))
  380. month = time.localtime(datTime).tm_mon # 获取月份
  381. monthDatTime = ""
  382. if 10 > month:
  383. datTime = time.mktime(time.strptime(str(year) + "/0" + str(month) + "/01", "%Y/%m/%d"))
  384. monthDatTime = int(datTime)
  385. else:
  386. datTime = time.mktime(time.strptime(str(year) + "/" + str(month) + "/01", "%Y/%m/%d"))
  387. monthDatTime = int(datTime)
  388. weekDatTime = time.mktime(time.strptime(stockHistPojo.dates, "%Y/%m/%d"))
  389. wday = time.localtime(weekDatTime).tm_wday # 获取周
  390. dt = datetime.datetime.strptime(stockHistPojo.dates, "%Y/%m/%d")
  391. out_date = (dt + datetime.timedelta(days=-wday)).strftime("%Y/%m/%d")
  392. weekDatTime1 = time.mktime(time.strptime(out_date, "%Y/%m/%d"))
  393. #获取日
  394. dayDatTime = time.mktime(time.strptime(stockHistPojo.dates, "%Y/%m/%d"))
  395. stockHistPojo.dateYear = str(int(yearDatTime))
  396. stockHistPojo.dateMonth = str(int(monthDatTime))
  397. stockHistPojo.dateWeek = str(int(weekDatTime1))
  398. stockHistPojo.dateDay = str(int(dayDatTime))
  399. stockHistPojoList.append(stockHistPojo)
  400. i = 0
  401. key = "`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`"
  402. # 批量插入 每次插入500
  403. db = dbOperation(db_config.db_gupiao)
  404. while True :
  405. vlues = ""
  406. # print(i)
  407. # 如果数组数量大于500 截取前500个
  408. if len(stockHistPojoList) - i > 500 :
  409. # stockPojoList[i : 500] 等于java subList(i, 500)
  410. for stockHistPojo in stockHistPojoList[i : 500 + i]:
  411. vlues = vlues + "('"+str(stockHistPojo.dateDay)+"','"+str(stockHistPojo.dates)+"','" + str(stockHistPojo.open) + "','" + str(stockHistPojo.close) + "','" + str(stockHistPojo.high)+ "','" + str(stockHistPojo.low) + "','" + str(stockHistPojo.preclose) + "','" + str(stockHistPojo.average) + "','" + str(stockHistPojo.change) + "','" + str(stockHistPojo.pctchange) + "','" + str(stockHistPojo.volume) + "','" + str(stockHistPojo.highlimit) + "','" + str(stockHistPojo.amount) + "','" + str(stockHistPojo.turn) + "','" + str(stockHistPojo.tradestatus) + "','" + str(stockHistPojo.lowlimit) + "','" + str(stockHistPojo.amplitude) + "','" + str(stockHistPojo.tnum) + "','" + str(stockHistPojo.tafactor) + "','" + str(stockHistPojo.fronttafactor) + "','" + str(stockHistPojo.isststock) + "','" + str(stockHistPojo.isxststock) + "','" + str(stockHistPojo.dateYear) + "','" + str(stockHistPojo.dateMonth) + "','" + str(stockHistPojo.dateWeek) + "'),"
  412. vlues = vlues[:-1]
  413. db.batchInsert("data_hist_399300_sz", key, vlues)
  414. i = i + 500
  415. else :
  416. # 如果数量小于500 并且不为数量不大于标记变量
  417. if len(stockHistPojoList) > i :
  418. for stockHistPojo in stockHistPojoList[i : len(stockHistPojoList)]:
  419. vlues = vlues + "('"+str(stockHistPojo.dateDay)+"','"+str(stockHistPojo.dates)+"','" + str(stockHistPojo.open) + "','" + str(stockHistPojo.close) + "','" + str(stockHistPojo.high)+ "','" + str(stockHistPojo.low) + "','" + str(stockHistPojo.preclose) + "','" + str(stockHistPojo.average) + "','" + str(stockHistPojo.change) + "','" + str(stockHistPojo.pctchange) + "','" + str(stockHistPojo.volume) + "','" + str(stockHistPojo.highlimit) + "','" + str(stockHistPojo.amount) + "','" + str(stockHistPojo.turn) + "','" + str(stockHistPojo.tradestatus) + "','" + str(stockHistPojo.lowlimit) + "','" + str(stockHistPojo.amplitude) + "','" + str(stockHistPojo.tnum) + "','" + str(stockHistPojo.tafactor) + "','" + str(stockHistPojo.fronttafactor) + "','" + str(stockHistPojo.isststock) + "','" + str(stockHistPojo.isxststock) + "','" + str(stockHistPojo.dateYear) + "','" + str(stockHistPojo.dateMonth) + "','" + str(stockHistPojo.dateWeek) + "'),"
  420. vlues = vlues[:-1]
  421. db.batchInsert("data_hist_399300_sz", key, vlues)
  422. break
  423. db.close()
  424. except Exception as ee:
  425. print("error >>>",ee)
  426. traceback.print_exc()
  427. else:
  428. print("demo end")
  429. def toGet5(self):
  430. try:
  431. db = dbOperation(db_config.db_gupiao)
  432. stockPojoList = db.query_list("select id, code, name, list_date listDate from t_stock_base_info_two where 1=1 and isf = 'T' ")
  433. getDataTime = time.strftime('%Y-%m-%d',time.localtime(time.time()))
  434. for stockPojo in stockPojoList:
  435. if(stockPojo['listDate'] == '待上市'):
  436. stockPojo['listDate'] = '1991-01-01'
  437. if stockPojo['listDate'] > getDataTime:
  438. continue
  439. isAdd = False
  440. sql = "select dates dates from data_hist_" + stockPojo['code'].replace(".", "_").lower() + " order by realTime desc limit 1"
  441. dates = db.query_one(sql)
  442. startDate = str(stockPojo['listDate'])
  443. if dates is not None :
  444. startDate = str(dates['dates'].replace("/", "-"))
  445. dd = datetime.datetime.strptime(startDate, "%Y-%m-%d")
  446. dd = (dd + datetime.timedelta(days=1)).strftime("%Y-%m-%d")
  447. startDate = dd
  448. stockHistPojoList = []
  449. try :
  450. data = c.csd(
  451. str(stockPojo['code']),
  452. "OPEN,CLOSE,HIGH,LOW,PRECLOSE,AVERAGE,CHANGE,PCTCHANGE,VOLUME,AMOUNT",
  453. startDate,
  454. getDataTime,
  455. "Period=1,adjustflag=1,curtype=1,Ispandas=1")
  456. print("返回数据:" + str(data))
  457. data.reset_index(inplace=True)
  458. # print(data)
  459. jsonData = data.to_json()
  460. text = json.loads(jsonData)
  461. for i in range(len(text['CODES'])):
  462. isAdd = True
  463. stockHistPojo = StockHistPojo()
  464. stockHistPojo.codes = text['CODES'][str(i)].replace(".", "_")
  465. stockHistPojo.open = text['OPEN'][str(i)]
  466. stockHistPojo.close = text['CLOSE'][str(i)]
  467. stockHistPojo.high = text['HIGH'][str(i)]
  468. stockHistPojo.low = text['LOW'][str(i)]
  469. stockHistPojo.preclose = text['PRECLOSE'][str(i)]
  470. if "None".strip() == str(text['AVERAGE'][str(i)]).strip():
  471. continue
  472. stockHistPojo.average = text['AVERAGE'][str(i)]
  473. stockHistPojo.change = text['CHANGE'][str(i)]
  474. stockHistPojo.pctchange = text['PCTCHANGE'][str(i)]
  475. stockHistPojo.volume = text['VOLUME'][str(i)]
  476. stockHistPojo.highlimit = "0"
  477. stockHistPojo.amount = text['AMOUNT'][str(i)]
  478. stockHistPojo.turn = "0"
  479. stockHistPojo.tradestatus = "0"
  480. stockHistPojo.lowlimit = "0"
  481. stockHistPojo.amplitude = "0"
  482. stockHistPojo.tnum = "0"
  483. stockHistPojo.tafactor = "0"
  484. stockHistPojo.fronttafactor = "0"
  485. stockHistPojo.isststock = "0"
  486. stockHistPojo.isxststock = "0"
  487. stockHistPojo.dates = text['DATES'][str(i)]
  488. datTime = time.mktime(time.strptime(stockHistPojo.dates, "%Y/%m/%d"))
  489. year = time.localtime(datTime).tm_year # 获取年份
  490. yearDatTime = time.mktime(time.strptime(str(year) + "/01/01", "%Y/%m/%d"))
  491. month = time.localtime(datTime).tm_mon # 获取月份
  492. monthDatTime = ""
  493. if 10 > month:
  494. datTime = time.mktime(time.strptime(str(year) + "/0" + str(month) + "/01", "%Y/%m/%d"))
  495. monthDatTime = int(datTime)
  496. else:
  497. datTime = time.mktime(time.strptime(str(year) + "/" + str(month) + "/01", "%Y/%m/%d"))
  498. monthDatTime = int(datTime)
  499. weekDatTime = time.mktime(time.strptime(stockHistPojo.dates, "%Y/%m/%d"))
  500. wday = time.localtime(weekDatTime).tm_wday # 获取周
  501. dt = datetime.datetime.strptime(stockHistPojo.dates, "%Y/%m/%d")
  502. out_date = (dt + datetime.timedelta(days=-wday)).strftime("%Y/%m/%d")
  503. weekDatTime1 = time.mktime(time.strptime(out_date, "%Y/%m/%d"))
  504. #获取日
  505. dayDatTime = time.mktime(time.strptime(stockHistPojo.dates, "%Y/%m/%d"))
  506. stockHistPojo.dateYear = str(int(yearDatTime))
  507. stockHistPojo.dateMonth = str(int(monthDatTime))
  508. stockHistPojo.dateWeek = str(int(weekDatTime1))
  509. stockHistPojo.dateDay = str(int(dayDatTime))
  510. stockHistPojoList.append(stockHistPojo)
  511. except Exception as ee:
  512. print("数据解析错误")
  513. i = 0
  514. key = "`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`"
  515. if len(stockHistPojoList) == 0:
  516. continue
  517. while True :
  518. vlues = ""
  519. # print(i)
  520. # 如果数组数量大于500 截取前500个
  521. if len(stockHistPojoList) - i > 500 :
  522. # stockPojoList[i : 500] 等于java subList(i, 500)
  523. for stockHistPojo in stockHistPojoList[i : 500 + i]:
  524. vlues = vlues + "('"+str(stockHistPojo.dateDay)+"','"+str(stockHistPojo.dates)+"','" + str(stockHistPojo.open) + "','" + str(stockHistPojo.close) + "','" + str(stockHistPojo.high)+ "','" + str(stockHistPojo.low) + "','" + str(stockHistPojo.preclose) + "','" + str(stockHistPojo.average) + "','" + str(stockHistPojo.change) + "','" + str(stockHistPojo.pctchange) + "','" + str(stockHistPojo.volume) + "','" + str(stockHistPojo.highlimit) + "','" + str(stockHistPojo.amount) + "','" + str(stockHistPojo.turn) + "','" + str(stockHistPojo.tradestatus) + "','" + str(stockHistPojo.lowlimit) + "','" + str(stockHistPojo.amplitude) + "','" + str(stockHistPojo.tnum) + "','" + str(stockHistPojo.tafactor) + "','" + str(stockHistPojo.fronttafactor) + "','" + str(stockHistPojo.isststock) + "','" + str(stockHistPojo.isxststock) + "','" + str(stockHistPojo.dateYear) + "','" + str(stockHistPojo.dateMonth) + "','" + str(stockHistPojo.dateWeek) + "'),"
  525. vlues = vlues[:-1]
  526. db.batchInsert("data_hist_" + stockPojo['code'].replace(".", "_").lower(), key, vlues)
  527. i = i + 500
  528. else :
  529. # 如果数量小于500 并且不为数量不大于标记变量
  530. if len(stockHistPojoList) > i :
  531. for stockHistPojo in stockHistPojoList[i : len(stockHistPojoList)]:
  532. vlues = vlues + "('"+str(stockHistPojo.dateDay)+"','"+str(stockHistPojo.dates)+"','" + str(stockHistPojo.open) + "','" + str(stockHistPojo.close) + "','" + str(stockHistPojo.high)+ "','" + str(stockHistPojo.low) + "','" + str(stockHistPojo.preclose) + "','" + str(stockHistPojo.average) + "','" + str(stockHistPojo.change) + "','" + str(stockHistPojo.pctchange) + "','" + str(stockHistPojo.volume) + "','" + str(stockHistPojo.highlimit) + "','" + str(stockHistPojo.amount) + "','" + str(stockHistPojo.turn) + "','" + str(stockHistPojo.tradestatus) + "','" + str(stockHistPojo.lowlimit) + "','" + str(stockHistPojo.amplitude) + "','" + str(stockHistPojo.tnum) + "','" + str(stockHistPojo.tafactor) + "','" + str(stockHistPojo.fronttafactor) + "','" + str(stockHistPojo.isststock) + "','" + str(stockHistPojo.isxststock) + "','" + str(stockHistPojo.dateYear) + "','" + str(stockHistPojo.dateMonth) + "','" + str(stockHistPojo.dateWeek) + "'),"
  533. vlues = vlues[:-1]
  534. db.batchInsert("data_hist_" + stockPojo['code'].replace(".", "_").lower(), key, vlues)
  535. break
  536. if isAdd:
  537. db.update("update t_stock_base_info set is_hist_add = 1 where id = " + str(stockPojo['id']))
  538. db.close()
  539. except Exception as ee:
  540. print("error >>>",ee)
  541. traceback.print_exc()
  542. else:
  543. print("获取额外指数基金等历史结束")