Advertisement
Guest User

Untitled

a guest
Mar 19th, 2018
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.35 KB | None | 0 0
  1. # coding=utf-8
  2. __author__ = 'Willow'
  3. import mysql.connector
  4. import threading
  5. import csv
  6. import re
  7. from datetime import datetime
  8. import jaro
  9. import itertools
  10.  
  11.  
  12. class DutchMatcher:
  13.  
  14. def __init__(self):
  15. self.dbhost = 'localhost'
  16. self.dbuser = 'root'
  17. self.dbpass = 'ASDFqwer!@#$1234'
  18. self.dbpass = ''
  19. self.dbname = 'oddmatcher'
  20.  
  21. self.dbhost = '138.201.105.247'
  22. self.dbuser = 'willow'
  23. self.dbpass = 'ASDFqwer!@#$1234'
  24. #self.dbpass = ''
  25. self.dbname = 'oddmatcher'
  26.  
  27. self.cnx_object = mysql.connector.connect(user=self.dbuser, password=self.dbpass, host=self.dbhost, database=self.dbname)
  28.  
  29. #Last Id
  30. self.last_b_id = 0
  31. self.last_e_id = 0
  32. self.getLastIds()
  33.  
  34. self.runnerTypes = {1: {
  35. 1: ["1", "X", "2"],
  36. 2: ["goal", "nogoal"],
  37. 3: [
  38. ["under15", "over15"],
  39. ["under25", "over25"],
  40. ["under35", "over35"],
  41. ["under45", "over45"]
  42. ]},
  43. 2: {4: ["1", "2"]},
  44. 3: {5: ["1", "2"]}
  45. }
  46.  
  47. def getLastIds(self):
  48. cursor = self.cnx_object.cursor(buffered=True)
  49. sql ='SELECT last_b_id, last_e_id FROM adm_config WHERE id = 1'
  50. cursor.execute(sql)
  51. row = cursor.fetchone()
  52. if row != None:
  53. self.last_b_id = row[0]
  54. self.last_e_id = row[1]
  55.  
  56. def start(self):
  57. cursor = self.cnx_object.cursor(buffered=True)
  58. # 새로 추가된 매치들의 exchange_event 들을 얻는다
  59. sql = "SELECT DISTINCT(exchange_event) FROM match_result WHERE exchange_event IN (SELECT DISTINCT(exchange_event) FROM match_result WHERE bookmaker_event>%s) AND exchange_event>%s" % (self.last_b_id, self.last_e_id)
  60. cursor.execute(sql)
  61. rows = cursor.fetchall()
  62. for row in rows:
  63. # 매 exchange_event 에 관한 bookmaker_event 들을 얻는다.
  64. sql = "SELECT DISTINCT(bookmaker_event) FROM match_result WHERE exchange_event=%s" % (row[0])
  65. cursor.execute(sql)
  66. subrows = cursor.fetchall()
  67. # 같은 exchange_event 에 대응하는 bookmaker_event 들이 3개 이상이면 그것들의 조합을 계산하고 매 조합에 관해서 순렬을 계산한다.
  68. if cursor.rowcount >=3:
  69. # 조합생성
  70. results = itertools.combinations(subrows, 3)
  71. for x in list(results):
  72. # 순렬 생성
  73. for y in list(itertools.permutations(x)):
  74. ids = []
  75. logRows = []
  76. for z in y:
  77. ids.append(z[0])
  78. sql = "SELECT * FROM match_result WHERE bookmaker_event=%s AND exchange_event=%s LIMIT 1" % (z[0], row[0])
  79. cursor.execute(sql)
  80. logRows.append(cursor.fetchone())
  81. self.insertMatch(ids, logRows)
  82. cursor.close()
  83.  
  84. def insertMatch(self, bookmakerIds, logRows):
  85. cursor = self.cnx_object.cursor(buffered=True)
  86. try:
  87. # 세개의 행들중에서 같은 bookmaker에 해당한 이벤트들이 존재하면 귀한한다.
  88. if logRows[0][6] == logRows[1][6] or logRows[1][6] == logRows[2][6] or logRows[0][6] == logRows[2][6]:
  89. return
  90. sql = "SELECT * FROM `match_dutch_result` WHERE bookmaker1_event=%s AND bookmaker2_event = %s AND bookmaker3_event = %s" % (bookmakerIds[0], bookmakerIds[1], bookmakerIds[2])
  91. cursor.execute(sql)
  92. if cursor.rowcount < 1:
  93. sql = ("INSERT INTO `match_dutch_result` "
  94. "(`datetime`, "
  95. "`sport`, "
  96. "`eventname`, "
  97. "`bookmaker1`, "
  98. "`bookmaker1_event`, "
  99. "`bookmaker1_active`, "
  100. "`bookmaker2`, "
  101. "`bookmaker2_event`, "
  102. "`bookmaker2_active`, "
  103. "`bookmaker3`, "
  104. "`bookmaker3_event`, "
  105. "`bookmaker3_active`, "
  106. "`market` ,"
  107. "`runner1`, "
  108. "`runner2`, "
  109. "`runner3`, "
  110. "`logid`) "
  111. "VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"
  112. )
  113. insertData = []
  114. for key in dict(self.runnerTypes[int(logRows[0][2])]).keys():
  115. item = self.runnerTypes[int(logRows[0][2])][key]
  116. if key != 3:
  117. item3 = ""
  118. if len(item)>=3:
  119. item3 = item[2]
  120. insertData.append((logRows[0][1], logRows[0][2], logRows[0][3],
  121. logRows[0][6], logRows[0][8], logRows[0][9],
  122. logRows[1][6], logRows[1][8], logRows[1][9],
  123. logRows[2][6], logRows[2][8], logRows[2][9],
  124. key, item[0], item[1], item3, logRows[0][19]
  125. ))
  126. else:
  127. for subitem in item:
  128. insertData.append((logRows[0][1], logRows[0][2], logRows[0][3],
  129. logRows[0][6], logRows[0][8], logRows[0][9],
  130. logRows[1][6], logRows[1][8], logRows[1][9],
  131. logRows[2][6], logRows[2][8], logRows[2][9],
  132. key, subitem[0], subitem[1], None, logRows[0][19]
  133. ))
  134. cursor.executemany(sql, insertData)
  135. self.cnx_object.commit()
  136. except Exception as e:
  137. print(str(e))
  138. cursor.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement