split_table.py 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229
  1. #coding:utf-8
  2. import os
  3. import time
  4. import datetime
  5. import sys
  6. import django
  7. from django.core.cache import cache
  8. from django.db import connection
  9. #import pymysql
  10. import torndb
  11. import json
  12. sys.path.append('/mnt/wzbapi/src')
  13. os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
  14. django.setup()
  15. import common.models as cm
  16. import common.common_control as ccc
  17. def create_table(match_id):
  18. sql = """
  19. SET NAMES utf8mb4;
  20. SET FOREIGN_KEY_CHECKS = 0;
  21. DROP TABLE IF EXISTS `player_record_%s`;
  22. CREATE TABLE `player_record_%s` (
  23. `id` int(11) NOT NULL AUTO_INCREMENT,
  24. `user_id` int(11) NULL DEFAULT NULL,
  25. `username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  26. `usercode` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  27. `match_id` int(11) NULL DEFAULT NULL,
  28. `match_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  29. `match_group` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  30. `init_fund` double NULL DEFAULT NULL,
  31. `yesterday_fund` double NULL DEFAULT NULL,
  32. `today_fund` double NULL DEFAULT NULL,
  33. `yesterday_stock` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL,
  34. `today_stock` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL,
  35. `yesterday_stock_img` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL,
  36. `today_stock_img` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL,
  37. `ctime` datetime(6) NULL,
  38. `player_id` int(11) NULL DEFAULT NULL,
  39. `stock_date` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  40. `today_income` double NULL DEFAULT NULL,
  41. `total_income` double NULL DEFAULT NULL,
  42. `rank` int(11) NULL DEFAULT NULL,
  43. `is_markt` smallint(6) NOT NULL,
  44. `yesterday_is_markt` smallint(6) NOT NULL,
  45. `auto_complete` smallint(6) NOT NULL,
  46. `yesterday_auto_complete` smallint(6) NOT NULL,
  47. `group_rank` int(11) NULL DEFAULT NULL,
  48. `badge` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  49. `cw` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  50. `df` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  51. `experience` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL,
  52. `pz` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  53. `wanzhu_comment` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL,
  54. `zq` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  55. `comments_count` int(11) NULL DEFAULT NULL,
  56. `zans` int(11) NULL DEFAULT NULL,
  57. `opmode_group` int(11) NULL DEFAULT NULL,
  58. `opmode_group_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  59. PRIMARY KEY (`id`) USING BTREE
  60. ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
  61. SET FOREIGN_KEY_CHECKS = 1;
  62. """ % (match_id,match_id)
  63. db = torndb.Connection(
  64. '172.29.110.52:3306',
  65. 'wanzb',
  66. user='wanzb',
  67. password='wanzb890*()',
  68. charset='utf8mb4')
  69. try:
  70. db.execute(sql)
  71. except Exception as e:
  72. print(e)
  73. db.close()
  74. def insert_data(record):
  75. sql = """
  76. INSERT INTO `player_record_%s`(
  77. `id`,
  78. `user_id`,
  79. `username`,
  80. `usercode`,
  81. `match_id`,
  82. `match_name`,
  83. `match_group`,
  84. `init_fund`,
  85. `yesterday_fund`,
  86. `today_fund`,
  87. `yesterday_stock`,
  88. `today_stock`,
  89. `yesterday_stock_img`,
  90. `today_stock_img`,
  91. `ctime`,
  92. `player_id`,
  93. `stock_date`,
  94. `today_income`,
  95. `total_income`,
  96. `rank`,
  97. `is_markt`,
  98. `yesterday_is_markt`,
  99. `auto_complete`,
  100. `yesterday_auto_complete`,
  101. `group_rank`,
  102. `badge`,
  103. `cw`,
  104. `df`,
  105. `experience`,
  106. `pz`,
  107. `wanzhu_comment`,
  108. `zq`,
  109. `comments_count`,
  110. `zans`
  111. )VALUES (
  112. "%s",
  113. "%s",
  114. "%s",
  115. "%s",
  116. "%s",
  117. "%s",
  118. "%s",
  119. "%s",
  120. "%s",
  121. "%s",
  122. "%s",
  123. "%s",
  124. "%s",
  125. "%s",
  126. "%s",
  127. "%s",
  128. "%s",
  129. "%s",
  130. "%s",
  131. "%s",
  132. "%s",
  133. "%s",
  134. "%s",
  135. "%s",
  136. "%s",
  137. "%s",
  138. "%s",
  139. "%s",
  140. "%s",
  141. "%s",
  142. "%s",
  143. "%s",
  144. "%s",
  145. "%s"
  146. );
  147. """ % (
  148. record["match_id"],
  149. record["id"],
  150. record["user_id"],
  151. record["username"],
  152. record["usercode"],
  153. record["match_id"],
  154. record["match_name"] if record["match_name"] else "",
  155. record["match_group"],
  156. record["init_fund"],
  157. record["yesterday_fund"],
  158. record["today_fund"],
  159. record["yesterday_stock"].replace('"','\\"') if record["yesterday_stock"] else "[]",
  160. record["today_stock"].replace('"','\\"') if record["today_stock"] else "[]",
  161. record["yesterday_stock_img"].replace('"','\\"') if record["yesterday_stock_img"] else "[]",
  162. record["today_stock_img"].replace('"','\\"') if record["today_stock_img"] else "[]",
  163. record["ctime"],
  164. record["player_id"],
  165. record["stock_date"],
  166. record["today_income"],
  167. record["total_income"],
  168. record["rank"] if record["rank"] else 0,
  169. record["is_markt"],
  170. record["yesterday_is_markt"],
  171. record["auto_complete"],
  172. record["yesterday_auto_complete"],
  173. record["group_rank"],
  174. record["badge"],
  175. record["cw"] if record["cw"] else "",
  176. record["df"] if record["df"] else "",
  177. record["experience"] if record["experience"] else "",
  178. record["pz"] if record["pz"] else "",
  179. record["wanzhu_comment"] if record["wanzhu_comment"] else "",
  180. record["zq"] if record["zq"] else "",
  181. record["comments_count"] if record["comments_count"] else 0,
  182. record["zans"] if record["zans"] else 0
  183. )
  184. db = torndb.Connection(
  185. '127.0.0.1:3306',
  186. 'wanzb',
  187. user='root',
  188. password='xjc890*()',
  189. charset='utf8mb4')
  190. try:
  191. #print(sql,22222222222222222222)
  192. sql = sql.replace("\n","").replace("\t","")
  193. #print(sql,33333333333333333333)
  194. db.execute(sql)
  195. except Exception as e:
  196. print(e)
  197. print(sql)
  198. #db.close()
  199. def split_table():
  200. """
  201. """
  202. qset = cm.Match.objects.filter(id=15)
  203. #qset = cm.Match.objects.all()
  204. for obj in qset:
  205. match_id = obj.id
  206. create_table(match_id)
  207. def migrate_data():
  208. #qset = cm.Match.objects.all()
  209. qset = cm.Match.objects.filter(id=11)
  210. for obj in qset:
  211. match_id = obj.id
  212. record_set = cm.PlayerRecord.objects.filter(match_id=match_id,stock_date='2022-07-20')
  213. data = list(record_set.values())
  214. for item in data:
  215. insert_data(item)
  216. if __name__ == "__main__":
  217. split_table()
  218. #migrate_data()