update_date.py 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297
  1. #!/usr/bin/env python
  2. #coding=utf-8
  3. """电视台收视率统计
  4. """
  5. import datetime
  6. import re
  7. import sys
  8. reload(sys)
  9. sys.setdefaultencoding('utf8')
  10. def parse_date(field, date_format):
  11. """
  12. 日期转换
  13. """
  14. time_format = datetime.datetime.strptime(field, date_format)
  15. time_format = time_format.strftime(u'%Y-%m-%d')
  16. return time_format
  17. def parse_field(field):
  18. """
  19. 处理字段,除了p_detail字段
  20. """
  21. if field is None or len(field) == 0:
  22. return ""
  23. else:
  24. field = strQ2B(field)
  25. return field.replace(' ', '')
  26. def strQ2B(ustring):
  27. """
  28. 全角转半角
  29. """
  30. tstring = ""
  31. for uchar in ustring:
  32. inside_code = ord(uchar)
  33. # 全角空格直接转换
  34. if inside_code == 12288:
  35. inside_code = 32
  36. if inside_code == 160:
  37. inside_code = 32
  38. # 全角字符(除空格)根据关系转化
  39. elif (inside_code >= 65281 and inside_code <= 65374):
  40. inside_code -= 65248
  41. tstring += unichr(inside_code)
  42. return tstring
  43. from dev_mysql_conn import Mysql
  44. def update_show_time():
  45. conn = Mysql.createOfflineConn()
  46. sql = """
  47. select id, show_time from yxb.ad_tv_lib
  48. """
  49. rows = Mysql.getAll(sql, conn=conn)
  50. for row in rows:
  51. _id = row['id']
  52. show_time = row['show_time']
  53. if show_time is not None and len(show_time) > 0:
  54. show_time = parse_field(show_time)
  55. _str = show_time.decode('utf8')
  56. # 格式xxxx年y月d日
  57. # xx=ur"\d+[\u5e74]\d+[\u6708]\d+[\u65e5]"
  58. # p = re.compile(xx)
  59. # date_list = p.findall(_str)
  60. # if date_list and len(date_list) > 0:
  61. # date = date_list[0]
  62. # show_date = parse_date(date, '%Y年%m月%d日')
  63. # print show_date
  64. # sql = """
  65. # update yxb.ad_tv_lib set show_time = '%s' where id = '%s'
  66. # """
  67. # sql = sql % (show_date, _id)
  68. # Mysql.update(sql, conn=conn)
  69. # # 格式xxxx年y月d号
  70. # xx=ur"\d+[\u5e74]\d+[\u6708]\d+[\u53f7]"
  71. # p = re.compile(xx)
  72. # date_list = p.findall(_str)
  73. # if date_list and len(date_list) > 0:
  74. # date = date_list[0]
  75. # show_date = parse_date(date, '%Y年%m月%d号')
  76. # print _str
  77. # sql = """
  78. # update yxb.ad_tv_lib set show_time = '%s' where id = '%s'
  79. # """
  80. # sql = sql % (show_date, _id)
  81. # # Mysql.update(sql, conn=conn)
  82. # xx=ur"\d+[\u5e74]\d+[\u6708]"
  83. # p = re.compile(xx)
  84. # date_list = p.findall(_str)
  85. # if date_list and len(date_list) == 1:
  86. # print _str
  87. # date = date_list[0]
  88. # show_date = parse_date(date, '%Y年%m月')
  89. # sql = """
  90. # update yxb.ad_tv_lib set show_time = '%s' where id = '%s'
  91. # """
  92. # sql = sql % (show_date, _id)
  93. # # Mysql.update(sql, conn=conn)
  94. # # 年月
  95. # xx=ur"\d+[\u5e74]\d+[\u6708]"
  96. # p = re.compile(xx)
  97. # date_list = p.findall(_str)
  98. # if date_list and len(date_list) > 0:
  99. # date = date_list[0]
  100. # show_time_date = parse_date(date, '%Y年%m月')
  101. # print _str
  102. # sql = """
  103. # update yxb.ad_tv_lib set show_time = '%s' where id = '%s'
  104. # """
  105. # sql = sql % (show_time_date, _id)
  106. # Mysql.update(sql, conn=conn)
  107. # 年
  108. xx=ur"\d+[\u5e74]"
  109. p = re.compile(xx)
  110. date_list = p.findall(_str)
  111. if date_list and len(date_list) > 0:
  112. date = date_list[0]
  113. show_time_date = parse_date(date, '%Y年')
  114. print _str
  115. sql = """
  116. update yxb.ad_tv_lib set show_time = '%s' where id = '%s'
  117. """
  118. sql = sql % (show_time_date, _id)
  119. Mysql.update(sql, conn=conn)
  120. Mysql.close(conn)
  121. # 更新dates字段
  122. def update_dates():
  123. conn = Mysql.createOnlineConn()
  124. sql = """
  125. select id, dates from yxb.ad_tv_lib
  126. """
  127. rows = Mysql.getAll(sql, conn=conn)
  128. for row in rows:
  129. _id = row['id']
  130. dates = row['dates']
  131. if dates is not None and len(dates) > 0:
  132. dates = parse_field(dates)
  133. _str = dates.decode('utf8')
  134. # # 年月日
  135. # xx=ur"\d+[\u5e74]\d+[\u6708]\d+[\u65e5]"
  136. # p = re.compile(xx)
  137. # date_list = p.findall(_str)
  138. # if date_list and len(date_list) > 0:
  139. # date = date_list[0]
  140. # dates_date = parse_date(date, '%Y年%m月%d日')
  141. # print _str
  142. # sql = """
  143. # update yxb.ad_tv_lib set dates = '%s' where id = '%s'
  144. # """
  145. # sql = sql % (dates_date, _id)
  146. # Mysql.update(sql, conn=conn)
  147. # # - -
  148. # xx=ur"\d+[-]\d+[-]\d+"
  149. # p = re.compile(xx)
  150. # date_list = p.findall(_str)
  151. # if date_list and len(date_list) > 0:
  152. # date = date_list[0]
  153. # dates_date = parse_date(date, '%Y-%m-%d')
  154. # print _str
  155. # sql = """
  156. # update yxb.ad_tv_lib set dates = '%s' where id = '%s'
  157. # """
  158. # sql = sql % (dates_date, _id)
  159. # Mysql.update(sql, conn=conn)
  160. # # 年月
  161. # xx=ur"\d+[\u5e74]\d+[\u6708]"
  162. # p = re.compile(xx)
  163. # date_list = p.findall(_str)
  164. # if date_list and len(date_list) > 0:
  165. # date = date_list[0]
  166. # dates_date = parse_date(date, '%Y年%m月')
  167. # print _str
  168. # sql = """
  169. # update yxb.ad_tv_lib set dates = '%s' where id = '%s'
  170. # """
  171. # sql = sql % (dates_date, _id)
  172. # Mysql.update(sql, conn=conn)
  173. # 年
  174. xx=ur"\d+[\u5e74]"
  175. p = re.compile(xx)
  176. date_list = p.findall(_str)
  177. if date_list and len(date_list) > 0:
  178. date = date_list[0]
  179. dates_date = parse_date(date, '%Y年')
  180. print _str
  181. sql = """
  182. update yxb.ad_tv_lib set dates = '%s' where id = '%s'
  183. """
  184. sql = sql % (dates_date, _id)
  185. Mysql.update(sql, conn=conn)
  186. else:
  187. sql = """
  188. update yxb.ad_tv_lib set dates = null where id = '%s'
  189. """
  190. sql = sql % (_id)
  191. Mysql.update(sql, conn=conn)
  192. Mysql.close(conn)
  193. def update_chupin_date():
  194. conn = Mysql.createOnlineConn()
  195. sql = """
  196. select id, chupin_date from yxb.ad_tv_lib
  197. """
  198. rows = Mysql.getAll(sql, conn=conn)
  199. for row in rows:
  200. _id = row['id']
  201. chupin_date = row['chupin_date']
  202. if chupin_date is not None and len(chupin_date) > 0:
  203. chupin_date = parse_field(chupin_date)
  204. _str = chupin_date.decode('utf8')
  205. # # 年月日
  206. # xx=ur"\d+[\u5e74]\d+[\u6708]\d+[\u65e5]"
  207. # p = re.compile(xx)
  208. # date_list = p.findall(_str)
  209. # if date_list and len(date_list) > 0:
  210. # date = date_list[0]
  211. # chupin_date_date = parse_date(date, '%Y年%m月%d日')
  212. # print _str
  213. # sql = """
  214. # update yxb.ad_tv_lib set chupin_date = '%s' where id = '%s'
  215. # """
  216. # sql = sql % (chupin_date_date, _id)
  217. # Mysql.update(sql, conn=conn)
  218. # # - -
  219. # xx=ur"\d+[-]\d+[-]\d+"
  220. # p = re.compile(xx)
  221. # date_list = p.findall(_str)
  222. # if date_list and len(date_list) > 0:
  223. # date = date_list[0]
  224. # dates_date = parse_date(date, '%Y-%m-%d')
  225. # print _str
  226. # sql = """
  227. # update yxb.ad_tv_lib set dates = '%s' where id = '%s'
  228. # """
  229. # sql = sql % (dates_date, _id)
  230. # Mysql.update(sql, conn=conn)
  231. # # 年月
  232. # xx=ur"\d+[\u5e74]\d+[\u6708]"
  233. # p = re.compile(xx)
  234. # date_list = p.findall(_str)
  235. # if date_list and len(date_list) > 0:
  236. # date = date_list[0]
  237. # chupin_date_date = parse_date(date, '%Y年%m月')
  238. # print _str
  239. # sql = """
  240. # update yxb.ad_tv_lib set chupin_date = '%s' where id = '%s'
  241. # """
  242. # sql = sql % (chupin_date_date, _id)
  243. # Mysql.update(sql, conn=conn)
  244. # 年
  245. xx=ur"\d+[\u5e74]"
  246. p = re.compile(xx)
  247. date_list = p.findall(_str)
  248. if date_list and len(date_list) > 0:
  249. date = date_list[0]
  250. chupin_date_date = parse_date(date, '%Y年')
  251. print _str
  252. sql = """
  253. update yxb.ad_tv_lib set chupin_date = '%s' where id = '%s'
  254. """
  255. sql = sql % (chupin_date_date, _id)
  256. Mysql.update(sql, conn=conn)
  257. else:
  258. sql = """
  259. update yxb.ad_tv_lib set chupin_date = null where id = '%s'
  260. """
  261. sql = sql % (_id)
  262. # Mysql.update(sql, conn=conn)
  263. Mysql.close(conn)
  264. if __name__ == '__main__':
  265. # update_show_time()
  266. pass