Guest User

Untitled

a guest
Mar 8th, 2018
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 25.76 KB | None | 0 0
  1. __author__ = 'Willow'
  2. import mysql.connector
  3. import csv
  4. import threading
  5.  
  6. class WDatabase:
  7.  
  8. bInsertEventList = []
  9. bUpdateEventList = []
  10.  
  11. eInsertEventList = []
  12. eUpdateEventList = []
  13.  
  14. scrapperCount = 0
  15.  
  16. def __init__(self):
  17. self.dbhost = '138.201.105.247'
  18. self.dbuser = 'willow'
  19. self.dbpass = 'ASDFqwer!@#$1234'
  20. self.dbname = 'oddmatcher'
  21.  
  22. self.dbhost = 'localhost'
  23. self.dbuser = 'root'
  24. self.dbpass = 'ASDFqwer!@#$1234'
  25. self.dbpass = ''
  26.  
  27. self.lock = threading.Lock()
  28. self.cnx_object = mysql.connector.connect(user=self.dbuser, password=self.dbpass, host=self.dbhost, database=self.dbname)
  29. self.updateBookmakerOddList = []
  30. self.updateExchangeOddList = []
  31. self.oddChunkSize = 500
  32.  
  33. def truncateTable(self):
  34. cursor = self.cnx_object.cursor(buffered=True)
  35. sql = "TRUNCATE TABLE bookmaker_event"
  36. cursor.execute(sql)
  37. sql = "TRUNCATE TABLE exchange_event"
  38. cursor.execute(sql)
  39. sql = "TRUNCATE TABLE match_log"
  40. cursor.execute(sql)
  41. sql = "TRUNCATE TABLE match_result"
  42. cursor.execute(sql)
  43. sql = "TRUNCATE TABLE adm_report"
  44. cursor.execute(sql)
  45. sql = "UPDATE adm_config SET last_b_id=0, last_e_id=0 WHERE id=1"
  46. cursor.execute(sql)
  47. self.cnx_object.commit()
  48. cursor.close()
  49.  
  50. def truncateEventTable(self, siteType, siteId):
  51. cursor = self.cnx_object.cursor(buffered=True)
  52. if siteType == 1:
  53. table = 'bookmaker_event'
  54. else:
  55. table = 'exchange_event'
  56. sql = "DELETE FROM "+table+" WHERE siteid = "+str(siteId)
  57. cursor.execute(sql)
  58. self.cnx_object.commit()
  59. cursor.close()
  60.  
  61. def truncateOddTable(self, siteType, siteId):
  62. cursor = self.cnx_object.cursor(buffered=True)
  63. if siteType == 1:
  64. sql = "DELETE FROM bookmaker_odd WHERE eventid IN (SELECT id FROM bookmaker_event WHERE siteid="+str(siteId)+")"
  65. else:
  66. sql = "DELETE FROM exchange_odd WHERE eventid IN (SELECT id FROM exchange_event WHERE siteid="+str(siteId)+")"
  67. cursor.execute(sql)
  68. self.cnx_object.commit()
  69. cursor.close()
  70.  
  71. def setUpdateFlag(self):
  72. try:
  73. cursor = self.cnx_object.cursor(buffered=True)
  74. sql ='UPDATE bookmaker_event SET update_flag=0 WHERE 1=1'
  75. cursor.execute(sql)
  76. sql ='UPDATE exchange_event SET update_flag=0 WHERE 1=1'
  77. cursor.execute(sql)
  78. self.cnx_object.commit()
  79. cursor.close()
  80. except Exception as e:
  81. print("ok")
  82.  
  83. def deleteRemovedEvents(self):
  84. try:
  85. cursor = self.cnx_object.cursor(buffered=True)
  86. sql = "DELETE FROM `match_result` WHERE bookmaker_event IN (SELECT id FROM bookmaker_event WHERE update_flag=0 )"
  87. cursor.execute(sql)
  88. self.cnx_object.commit()
  89.  
  90. sql = "DELETE FROM `match_result` WHERE exchange_event IN (SELECT id FROM exchange_event WHERE update_flag=0 )"
  91. cursor.execute(sql)
  92. self.cnx_object.commit()
  93.  
  94. sql = "DELETE FROM `match_log` WHERE bookmaker IN (SELECT id FROM bookmaker_event WHERE update_flag=0 )"
  95. cursor.execute(sql)
  96. self.cnx_object.commit()
  97.  
  98. sql = "DELETE FROM `match_log` WHERE exchange IN (SELECT id FROM exchange_event WHERE update_flag=0 )"
  99. cursor.execute(sql)
  100. self.cnx_object.commit()
  101.  
  102. sql = "DELETE FROM `exchange_event` WHERE update_flag=0"
  103. cursor.execute(sql)
  104. self.cnx_object.commit()
  105.  
  106. sql = "DELETE FROM `bookmaker_event` WHERE update_flag=0"
  107. cursor.execute(sql)
  108. self.cnx_object.commit()
  109. cursor.close()
  110. except Exception as e:
  111. self.log(0, "Database: deleteRemovedEvents >>exception " +str(e))
  112. cursor.close()
  113.  
  114. def deleteOldEvents(self):
  115. try:
  116. cursor = self.cnx_object.cursor(buffered=True)
  117. #sql = "DELETE FROM `match_result` WHERE match_result.datetime < NOW() - INTERVAL 8 HOUR"
  118. sql = "DELETE FROM `match_result` WHERE match_result.datetime < NOW()"
  119. sql = "DELETE FROM match_result WHERE id IN (SELECT * FROM (SELECT id FROM match_result WHERE match_result.datetime < NOW() order by id) AS X);"
  120. cursor.execute(sql)
  121. self.cnx_object.commit()
  122. sql = "DELETE FROM `exchange_event` WHERE exchange_event.datetime < NOW()"
  123. sql = "DELETE FROM exchange_event WHERE id IN (SELECT * FROM (SELECT id FROM exchange_event WHERE exchange_event.datetime < NOW() order by id) AS X)"
  124. cursor.execute(sql)
  125. self.cnx_object.commit()
  126. sql = "DELETE FROM `bookmaker_event` WHERE bookmaker_event.datetime < NOW()"
  127. sql = "DELETE FROM bookmaker_event WHERE id IN (SELECT * FROM (SELECT id FROM bookmaker_event WHERE bookmaker_event.datetime < NOW() order by id) AS X)"
  128. cursor.execute(sql)
  129. self.cnx_object.commit()
  130. sql = "DELETE FROM `match_log` WHERE match_log.datetime < NOW()"
  131. sql = "DELETE FROM match_log WHERE id IN (SELECT * FROM (SELECT id FROM match_log WHERE match_log.datetime < NOW() order by id) AS X) "
  132. cursor.execute(sql)
  133. self.cnx_object.commit()
  134. cursor.close()
  135. except Exception as e:
  136. self.log(0, "Database: deleteOldEvents >>exception " +str(e))
  137. cursor.close()
  138.  
  139.  
  140. def insertLeagueMatch(self, siteId, sportId, name, rowId=-1):
  141. '''
  142. cursor = self.cnx_object.cursor(buffered=True)
  143. sql = 'SELECT * FROM cfg_league_match WHERE s_id=%s AND league="%s" AND g_id=%s' % (siteId, name, sportId)
  144. cursor.execute(sql)
  145. if cursor.rowcount < 1:
  146. sql = 'INSERT INTO cfg_league_match(s_id, l_id, g_id, league) VALUES (%s, %s, %s, "%s")' % (siteId, rowId, sportId, name)
  147. cursor.execute(sql)
  148. self.cnx_object.commit()
  149. cursor.close()
  150. '''
  151. return
  152.  
  153. def insertLeague(self,sportId, name):
  154. row_no = -1
  155. cursor = self.cnx_object.cursor(buffered=True)
  156. sql = 'SELECT id FROM cfg_leagues WHERE league="%s" AND g_id=%s' % (name, sportId)
  157. cursor.execute(sql)
  158. if cursor.rowcount < 1:
  159. sql = ("INSERT INTO cfg_leagues"
  160. "(g_id, league)"
  161. "VALUES (%s, %s)")
  162. cursor.execute(sql , (sportId, name))
  163. self.cnx_object.commit()
  164. row_no = cursor.lastrowid
  165. else:
  166. row_no = cursor.fetchone()[0]
  167. return row_no
  168. cursor.close()
  169.  
  170. def insertEvent(self, name, league, datetime, siteid, gametype, sitetype, eventId):
  171. try:
  172. if str(league).lower().__contains__("fantasy"):
  173. return
  174. cursor = self.cnx_object.cursor(buffered=True)
  175. table = 'bookmaker_event'
  176. if sitetype == 1:
  177. table = 'bookmaker_event'
  178. else:
  179. table = 'exchange_event'
  180. sql = 'SELECT * FROM '+table+' WHERE datetime="'+str(datetime)+'" AND name="'+name+'" AND siteid = '+str(siteid) +' AND gametype = ' + str(gametype)
  181. cursor.execute(sql)
  182. self.lock.acquire()
  183. if cursor.rowcount < 1:
  184. if sitetype == 1:
  185. WDatabase.bInsertEventList.append((name, league, datetime, siteid, gametype, eventId, 1))
  186. else:
  187. WDatabase.eInsertEventList.append((name, league, datetime, siteid, gametype, eventId, 1))
  188. else:
  189. if sitetype == 1:
  190. WDatabase.bUpdateEventList.append((1, datetime, name, siteid, gametype))
  191. else:
  192. WDatabase.eUpdateEventList.append((1, datetime, name, siteid, gametype))
  193.  
  194. self.lock.release()
  195. cursor.close()
  196. except Exception as e:
  197. self.log(0, "Database: insertEvent >>exception " +str(e))
  198. return None
  199.  
  200. '''
  201. description: Under / Over 4.5
  202. name: : Under
  203. '''
  204. def insertOddChunkData(self, sitetype, data):
  205. try:
  206. cursor = self.cnx_object.cursor(buffered=True)
  207. if sitetype == 1:
  208. if len(data) != 0:
  209. while True:
  210. try:
  211. sql = "UPDATE match_result SET backodd_update=%s, backodd=%s WHERE bookmaker_event=%s AND runner=%s AND market=%s"
  212. cursor.executemany(sql, data)
  213. break
  214. except Exception as e:
  215. self.log(1, "Exception insertOddThread " + str(e))
  216. continue
  217.  
  218. else:
  219. if len(data) != 0:
  220. while True:
  221. try:
  222. sql = "UPDATE match_result SET layodd_update=%s, layodd=%s, liquidity=%s WHERE exchange_event=%s AND runner=%s AND market=%s"
  223. cursor.executemany(sql, data)
  224. break
  225. except Exception as e:
  226. self.log(1, "Exception insertOddThread" + str(e))
  227. continue
  228. self.cnx_object.commit()
  229. cursor.close()
  230. except Exception as e:
  231. self.log(0, "Database: insertOddChunkData >>exception " + str(e))
  232.  
  233.  
  234. def insertOdd(self, sitetype, eventid, oddtype, description, name, odd, liquidity = 0):
  235.  
  236. try:
  237. if sitetype == 1:
  238. self.updateBookmakerOddList.append((1, odd, eventid, name, oddtype))
  239. if(len(self.updateBookmakerOddList) >= self.oddChunkSize):
  240. tempBookmakerUpdateData = self.updateBookmakerOddList[:self.oddChunkSize]
  241. self.updateBookmakerOddList = self.updateBookmakerOddList[self.oddChunkSize:]
  242. self.insertOddChunkData(sitetype, tempBookmakerUpdateData)
  243. else:
  244. self.updateExchangeOddList.append((1, odd, liquidity, eventid, name, oddtype))
  245. if (len(self.updateExchangeOddList) >= self.oddChunkSize):
  246. tempExchangeUpdateData = self.updateExchangeOddList[:self.oddChunkSize]
  247. self.updateExchangeOddList = self.updateExchangeOddList[self.oddChunkSize:]
  248. self.insertOddChunkData(sitetype, tempExchangeUpdateData)
  249. except Exception as e:
  250. self.log(0, "Database: insertOdd >>exception " +str(e))
  251. return None
  252.  
  253.  
  254. def getSiteInfo(self, name):
  255. try:
  256. cursor = self.cnx_object.cursor(buffered=True)
  257. sql = "SELECT * FROM cfg_bookies WHERE link='"+name+"'"
  258. cursor.execute(sql)
  259. ret = cursor.fetchone()
  260. return ret
  261. except Exception as e:
  262. self.log(0, "Database: getSiteInfo >>exception " +str(e))
  263. return None
  264.  
  265. def getSports(self):
  266. try:
  267. cursor = self.cnx_object.cursor(buffered=True)
  268. sql = "SELECT * FROM cfg_games"
  269. cursor.execute(sql)
  270. ret = []
  271. results = cursor.fetchall()
  272. for row in results:
  273. sport = dict()
  274. sport[row[0]] = row
  275. ret.append(sport)
  276. return ret
  277. except Exception as e:
  278. self.log(0, "Database: getSports >>exception " +str(e))
  279. return None
  280.  
  281. def test(self):
  282. cursor = self.cnx_object.cursor(buffered=True)
  283. cursor.executemany("UPDATE bookmaker_event SET name=%s, league=%s WHERE siteid=%s", [("test", "test", 5), ("test", "test", 13), ("test", "test", 4)])
  284. self.cnx_object.commit()
  285. cursor.close()
  286.  
  287. def getOdds(self, siteid):
  288. try:
  289. cursor = self.cnx_object.cursor(buffered=True)
  290. sql = "SELECT * FROM cfg_parse JOIN cfg_oddtype ON cfg_parse.oddId = cfg_oddtype.id WHERE cfg_parse.siteId='" + str(siteid) +"'"
  291. cursor.execute(sql)
  292. ret = []
  293. results = cursor.fetchall()
  294. for row in results:
  295. temp = dict()
  296. temp["id"] = row[2]
  297. temp["pattern"] = row[3]
  298. temp["sportId"] = row[5]
  299. ret.append(temp)
  300. return ret
  301. except Exception as e:
  302. self.log(0, "Database: getOdds >>exception " +str(e))
  303. return None
  304.  
  305. def loadSeparator(self, siteid):
  306. try:
  307. # Getting Team Separtor Letter
  308. cursor = self.cnx_object.cursor(buffered=True)
  309. sql = "SELECT * FROM cfg_team_sep WHERE siteId='"+str(siteid)+"'"
  310. cursor.execute(sql)
  311. row = cursor.fetchone()
  312. return row[2]
  313. except Exception as e:
  314. self.log(0, "Database: loadSeparator >>exception " +str(e))
  315. cursor.close()
  316. return None
  317.  
  318. # Read all matched events from 'matched_event' table by siteID
  319. # id, name, league, datetime, siteid, gametype, eventId (Table structure)
  320. def getMatchedEvents(self, siteId, siteType):
  321. try:
  322. ret = []
  323.  
  324. cursor = self.cnx_object.cursor(buffered=True)
  325. if siteType == 1:
  326. sql = "UPDATE match_result SET backodd_update=0 WHERE bookmaker='"+str(siteId)+"'"
  327. else:
  328. sql = "UPDATE match_result SET layodd_update=0 WHERE exchange='"+str(siteId)+"'"
  329. cursor.execute(sql)
  330. self.cnx_object.commit()
  331.  
  332. if siteType == 1:
  333. table_name = "bookmaker_event"
  334. sql = "SELECT DISTINCT(bookmaker_event) FROM match_result WHERE bookmaker='"+str(siteId)+"'"
  335. sql = "SELECT DISTINCT(id) FROM bookmaker_event WHERE siteid='"+str(siteId)+"'"
  336. else:
  337. table_name = "exchange_event"
  338. sql = "SELECT DISTINCT(exchange_event) FROM match_result WHERE exchange='"+str(siteId)+"'"
  339. sql = "SELECT DISTINCT(id) FROM exchange_event WHERE siteid='" + str(siteId) + "'"
  340. cursor.execute(sql)
  341. rows = cursor.fetchall()
  342. for row in rows:
  343. sql = 'SELECT * FROM %s WHERE id="%s" ' % (table_name, row[0])
  344. cursor.execute(sql)
  345. ret.append(cursor.fetchone())
  346. return ret
  347. except Exception as e:
  348. self.log(0, "Database: getMatchedEvents >>exception " +str(e))
  349. cursor.close()
  350.  
  351. def updateLastIds(self):
  352. cursor = self.cnx_object.cursor(buffered=True)
  353. sql = "SELECT id FROM bookmaker_event ORDER BY id DESC LIMIT 0,1"
  354. cursor.execute(sql)
  355. row = cursor.fetchone()
  356. if row == None:
  357. b_lastId = 0
  358. else:
  359. b_lastId = row[0]
  360. sql = "SELECT id FROM exchange_event ORDER BY id DESC LIMIT 0,1"
  361. cursor.execute(sql)
  362. row = cursor.fetchone()
  363. if row == None:
  364. e_lastId = 0
  365. else:
  366. e_lastId = row[0]
  367. sql ='UPDATE adm_config SET last_b_id=%s, last_e_id=%s WHERE id = %s' % (b_lastId, e_lastId, 1)
  368. cursor.execute(sql)
  369. self.cnx_object.commit()
  370. cursor.close()
  371.  
  372. def executeSQL(self, sql):
  373. cursor = self.cnx_object.cursor(buffered=True)
  374. cursor.execute(sql)
  375. self.cnx_object.commit()
  376. cursor.close()
  377.  
  378. # Sisal, Lottomatica
  379. def getMatchedLeagues(self, siteId, siteType):
  380. try:
  381. ret = []
  382. cursor = self.cnx_object.cursor(buffered=True)
  383. if siteType == 1:
  384. table_name = "bookmaker_event";
  385. sql = "SELECT DISTINCT(league) FROM bookmaker_event WHERE id IN ( SELECT DISTINCT(bookmaker_event) FROM match_result WHERE bookmaker=%s)" %(siteId)
  386. sql = "SELECT DISTINCT(league) FROM bookmaker_event WHERE siteid='"+str(siteId)+"'"
  387. else:
  388. table_name = "exchange_event";
  389. sql = "SELECT DISTINCT(league) FROM exchange_event WHERE id IN ( SELECT DISTINCT(exchange_event) FROM match_result WHERE exchange=%s)" % (siteId)
  390. cursor.execute(sql)
  391. rows = cursor.fetchall()
  392. for row in rows:
  393. if str(row[0]).__contains__('"'):
  394. sql = "SELECT * FROM %s WHERE league = '%s' AND siteid=%s" % ( table_name, str(row[0]) , siteId)
  395. else:
  396. sql = 'SELECT * FROM %s WHERE league = "%s" AND siteid=%s' % ( table_name, str(row[0]) ,siteId)
  397. cursor.execute(sql)
  398. record = cursor.fetchone()
  399. ret.append(record)
  400. return ret
  401. except Exception as e:
  402. self.log(0, "Database: getMatchedLeagues >>exception " +str(e))
  403. cursor.close()
  404.  
  405. def updateEventReport(self, siteId, f_count, t_count, b_count, takeTime, endTime):
  406. try:
  407. cursor = self.cnx_object.cursor(buffered=True)
  408. sql ="SELECT * FROM adm_report WHERE siteId="+str(siteId)
  409. cursor.execute(sql)
  410. if cursor.rowcount < 1:
  411. sql = ("INSERT INTO adm_report (siteId, f_count, t_count, b_count, event_taken_time,last_event_time) VALUES (%s, %s, %s, %s, %s, %s)")
  412. cursor.execute(sql , (siteId, f_count, t_count,b_count, takeTime, endTime))
  413. else:
  414. sql ='UPDATE adm_report SET f_count=%s, t_count=%s, b_count=%s, event_taken_time=%s, last_event_time ="%s", e_update_count=e_update_count + 1 WHERE siteId=%s ' % (f_count, t_count, b_count, takeTime, endTime, siteId)
  415. cursor.execute(sql)
  416. self.cnx_object.commit()
  417. except Exception as e:
  418. self.log(0, "Database: updateEventReport >>exception " +str(e))
  419. cursor.close()
  420.  
  421. def updateOddReport(self,siteType, siteId, m_count, odd_count, takenTime, endTime):
  422.  
  423. cursor = self.cnx_object.cursor(buffered=True)
  424. try:
  425. if siteType == 1:
  426. tempBookmakerUpdateData = self.updateBookmakerOddList
  427. self.insertOddChunkData(siteType, tempBookmakerUpdateData)
  428. self.updateBookmakerOddList =[]
  429. else:
  430. tempExchangeUpdateData = self.updateExchangeOddList
  431. self.insertOddChunkData(siteType, tempExchangeUpdateData)
  432. self.updateExchangeOddList = []
  433.  
  434. sql ="SELECT * FROM adm_report WHERE siteId="+str(siteId)
  435. cursor.execute(sql)
  436. if cursor.rowcount < 1:
  437. sql = ("INSERT INTO adm_report (siteId, m_count, oddcount, odd_taken_time,last_odd_time) VALUES (%s, %s, %s, %s, %s)")
  438. cursor.execute(sql , (siteId, m_count, odd_count, takenTime, endTime))
  439. else:
  440. sql ='UPDATE adm_report SET m_count=%s, oddcount=%s, odd_taken_time=%s, last_odd_time ="%s", o_update_count=o_update_count+1 WHERE siteId=%s ' % (m_count, odd_count,takenTime, endTime, siteId)
  441. cursor.execute(sql)
  442. self.cnx_object.commit()
  443.  
  444.  
  445. if siteType == 1:
  446. sql = "UPDATE match_result SET backodd=0 WHERE id IN (SELECT * FROM (SELECT id FROM match_result WHERE bookmaker='%s' AND backodd_update = 0) AS X)" % (siteId)
  447. else:
  448. sql = "UPDATE match_result SET layodd=0 WHERE id IN (SELECT * FROM (SELECT id FROM match_result WHERE exchange='%s' AND layodd_update = 0) AS X)" % (siteId)
  449.  
  450. cursor.execute(sql)
  451. self.cnx_object.commit()
  452.  
  453. except Exception as e:
  454. self.log(0, "Database: updateOddReport >>exception " +str(e))
  455. cursor.close()
  456.  
  457. def getTimerConfig(self):
  458. try:
  459. cursor = self.cnx_object.cursor(buffered=True)
  460. sql ='SELECT e_timer, o_timer FROM adm_config WHERE id = 1'
  461. cursor.execute(sql)
  462. row = cursor.fetchone()
  463. cursor.close()
  464. if row != None:
  465. return row
  466. else:
  467. return None
  468. except Exception as e:
  469. self.log(0, "Database: getTimerConfig >>exception " +str(e))
  470. cursor.close()
  471. return None
  472.  
  473.  
  474. def getActive(self, siteId):
  475. cursor = self.cnx_object.cursor(buffered=True)
  476. try:
  477. sql ='SELECT active FROM cfg_bookies WHERE id = ' + str(siteId)
  478. cursor.execute(sql)
  479. row = cursor.fetchone()
  480. cursor.close()
  481. return row[0]
  482. except Exception as e:
  483. self.log(0, "Database: getActive >>exception " +str(e))
  484. cursor.close()
  485. return 0
  486.  
  487. def log(self, type, message):
  488. print(message)
  489.  
  490. def update_many(self, data_list=None, mysql_table=None):
  491. cur = self.cnx_object.cursor(buffered=True)
  492. query = ""
  493. values = []
  494. for data_dict in data_list:
  495.  
  496. if not query:
  497. columns = ', '.join('`{0}`'.format(k) for k in data_dict)
  498. duplicates = ', '.join('{0}=VALUES({0})'.format(k) for k in data_dict)
  499. place_holders = ', '.join('%s'.format(k) for k in data_dict)
  500. query = "INSERT INTO {0} ({1}) VALUES ({2})".format(mysql_table, columns, place_holders)
  501. query = "{0} ON DUPLICATE KEY UPDATE {1}".format(query, duplicates)
  502.  
  503. v = tuple(data_dict.values())
  504. values.append(v)
  505.  
  506. try:
  507. cur.executemany(query, values)
  508. except Exception as e:
  509. print "MySQL Error: %s" % str(e)
  510. self.cnx_object.rollback()
  511. return False
  512.  
  513. self.cnx_object.commit()
  514. cur.close()
  515.  
  516. def insertOddThread(self):
  517. while True:
  518. cursor = self.cnx_object.cursor()
  519. self.lock.acquire()
  520. tempBookmakerUpdateData = WDatabase.updateBookmakerOddList[:1000]
  521. WDatabase.updateBookmakerOddList = WDatabase.updateBookmakerOddList[1000:]
  522.  
  523. tempExchangeUpdateData = WDatabase.updateExchangeOddList[:1000]
  524. WDatabase.updateExchangeOddList = WDatabase.updateExchangeOddList[1000:]
  525. self.lock.release()
  526. if len(tempBookmakerUpdateData) != 0:
  527. while True:
  528. try:
  529. sql = "UPDATE match_result SET backodd_update=%s, backodd=%s WHERE bookmaker_event=%s AND runner=%s AND market=%s"
  530. cursor.executemany(sql, tempBookmakerUpdateData)
  531. break
  532. except Exception as e:
  533. self.log(1, "Exception insertOddThread " + str(e))
  534. continue
  535. if len(tempExchangeUpdateData) != 0:
  536. while True:
  537. try:
  538. sql = "UPDATE match_result SET layodd_update=%s, layodd=%s, liquidity=%s WHERE exchange_event=%s AND runner=%s AND market=%s"
  539. cursor.executemany(sql, tempExchangeUpdateData)
  540. break
  541. except Exception as e:
  542. self.log(1, "Exception insertOddThread" + str(e))
  543. continue
  544.  
  545. self.cnx_object.commit()
  546. cursor.close()
  547. threading._sleep(2)
  548.  
  549. def insertEventThread(self, number):
  550. while True:
  551. cursor = self.cnx_object.cursor()
  552. if number==WDatabase.scrapperCount and len(WDatabase.bInsertEventList) == 0 and len(WDatabase.eInsertEventList) == 0 and len(WDatabase.bUpdateEventList) == 0 and len(WDatabase.eUpdateEventList) == 0:
  553. break
  554. self.lock.acquire()
  555. bTempInsertData = WDatabase.bInsertEventList[:1000]
  556. WDatabase.bInsertEventList = WDatabase.bInsertEventList[1000:]
  557.  
  558. eTempInsertData = WDatabase.eInsertEventList[:1000]
  559. WDatabase.eInsertEventList = WDatabase.eInsertEventList[1000:]
  560.  
  561. bTempUpdateData= WDatabase.bUpdateEventList[:1000]
  562. WDatabase.bUpdateEventList = WDatabase.bUpdateEventList[1000:]
  563.  
  564. eTempUpdateData= WDatabase.eUpdateEventList[:1000]
  565. WDatabase.eUpdateEventList = WDatabase.eUpdateEventList[1000:]
  566.  
  567. self.lock.release()
  568.  
  569. while True:
  570. try:
  571. sql = "UPDATE bookmaker_event SET update_flag=%s WHERE datetime=%s AND name=%s AND siteid=%s AND gametype=%s"
  572. cursor.executemany(sql, bTempUpdateData)
  573. sql = "UPDATE exchange_event SET update_flag=%s WHERE datetime=%s AND name=%s AND siteid=%s AND gametype=%s"
  574. cursor.executemany(sql, eTempUpdateData)
  575. break
  576. except Exception as e:
  577. self.log(1,"Exception insertEventThread"+ str(e))
  578. continue
  579.  
  580. while True:
  581. try:
  582. sql = ("INSERT INTO bookmaker_event (name, league, datetime, siteid, gametype, eventId, update_flag) VALUES (%s, %s, %s, %s, %s, %s, %s)")
  583. cursor.executemany(sql, bTempInsertData)
  584. sql = (
  585. "INSERT INTO exchange_event (name, league, datetime, siteid, gametype, eventId, update_flag) VALUES (%s, %s, %s, %s, %s, %s, %s)")
  586. cursor.executemany(sql, eTempInsertData)
  587. break
  588. except Exception as e:
  589. if str(e).__contains__("Duplicate entry")==True:
  590. break
  591. self.log(1,"Exception insertEventThread"+ str(e))
  592. continue
  593.  
  594. self.cnx_object.commit()
  595. cursor.close()
  596. threading._sleep(10)
Advertisement
Add Comment
Please, Sign In to add comment