话题水军识别应用
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

130 lines
4.8 KiB

  1. # coding=utf-8
  2. import time
  3. import pymysql
  4. from DBUtils.PooledDB import PooledDB,SharedDBConnection
  5. import json
  6. import datetime
  7. import re
  8. import traceback
  9. class MySQLUtils(object):
  10. def __init__(self, host, port, dbuser, password, database):
  11. self.pool = PooledDB(
  12. creator= pymysql, #使用连接数据库的模块
  13. maxconnections= 100, #连接池允许的最大连接数,0和None表示不限制连接数
  14. mincached= 10, #初始化时,链接池中至少创建的空闲的链接,0表示不创建
  15. maxcached= 100, #链接池中最多闲置的链接,0和None不限制
  16. maxshared=0,# 链接池中最多共享的链接数量,0和None表示全部共享。PS: 无用,因为pymysql和MySQLdb等模块的 threadsafety都为1,所有值无论设置为多少,_maxcached永远为0,所以永远是所有链接都共享。
  17. blocking=True, # 连接池中如果没有可用连接后,是否阻塞等待。True,等待;False,不等待然后报错
  18. maxusage=None, # 一个链接最多被重复使用的次数,None表示无限制
  19. setsession=[], # 开始会话前执行的命令列表。如:["set datestyle to ...", "set time zone ..."]
  20. ping=0, # ping MySQL服务端,检查是否服务可用。# 如:0 = None = never, 1 = default = whenever it is requested, 2 = when a cursor is created, 4 = when a query is executed, 7 = always
  21. host=host,
  22. port=int(port),
  23. user=dbuser,
  24. password=password,
  25. database=database,
  26. charset='utf8mb4'
  27. )
  28. #获取连接
  29. def connectdb(self):
  30. conn = self.pool.connection()
  31. # 验证当前连接是否断开,如果断开重新连接
  32. conn.ping(reconnect=True)
  33. cursor = conn.cursor(pymysql.cursors.DictCursor)
  34. return conn,cursor
  35. '''
  36. '''
  37. def queryAll(self,sql):
  38. conn,cursor = self.connectdb()
  39. cursor.execute(sql)
  40. results = cursor.fetchall()
  41. conn.close()
  42. return results
  43. '''
  44. '''
  45. def queryOne(self,sql):
  46. conn,cursor = self.connectdb()
  47. cursor.execute(sql)
  48. results = cursor.fetchone()
  49. conn.close()
  50. return results
  51. '''
  52. '''
  53. def insert(self,sql,values):
  54. conn, cursor = self.connectdb()
  55. try:
  56. # 执行 SQL 语句
  57. cursor.execute(sql, values)
  58. # 提交事务
  59. conn.commit()
  60. except:
  61. print('插入失败')
  62. print('错误sql语句:%s' %sql)
  63. traceback.print_exc()
  64. conn.rollback()
  65. finally:
  66. conn.close()
  67. '''
  68. '''
  69. def update(self,sql):
  70. conn, cursor = self.connectdb()
  71. try:
  72. cursor.execute(sql)
  73. conn.commit()
  74. except:
  75. print('修改失败')
  76. print('错误sql语句:%s' %sql)
  77. print(traceback.print_exc())
  78. conn.rollback()
  79. finally:
  80. conn.close()
  81. '''
  82. '''
  83. def delete(self,sql):
  84. conn, cursor = self.connectdb()
  85. try:
  86. cursor.execute(sql)
  87. conn.commit()
  88. except:
  89. print('删除失败')
  90. print('错误sql语句:%s' %sql)
  91. conn.rollback()
  92. finally:
  93. conn.close()
  94. def get_conn_pool(host,port,username,password,db):
  95. sqlhelper = MySQLUtils(host, port, username, password, db)
  96. return sqlhelper
  97. if __name__ == '__main__':
  98. sqlhelper = MySQLUtils("172.26.11.110", 3306, "crawl", "crawl123", "kyyzgpt")
  99. # conn = sqlhelper.pool.connection()
  100. # cursor = conn.cursor(pymysql.cursors.DictCursor)
  101. sql = 'select relation_id,start_id,end_id from relations where blueprint_id = 5'
  102. print("sql:%s" %sql)
  103. # cursor.execute(sql)
  104. # results = cursor.fetchall()
  105. results = sqlhelper.queryOne(sql)
  106. print (json.dumps(results))
  107. # if results:
  108. # print('有数据:{}'.format(len(results)))
  109. # for item in results:
  110. #
  111. # if item['sign']=='user':
  112. # p1 = r".*(?=/video)"
  113. # pattern1 = re.compile(p1)
  114. # matcher1 = re.search(pattern1, item['url'])
  115. # # attr = {'brand':item['keyword'],'project_name':'208-A国'}
  116. # attr = {'project_name':'208-A国'}
  117. # sql = "insert into crawl_seed_task (pageTypeID,cid,task_url,attachTag,crawl_mode,crawl_cyclicity_minute,crawl_period_hour,last_crawl_time,next_crawl_time,createTime) values(61,'youtube','{}','{}',1,720,24,'2019-11-28 12:00:00','2019-11-29 00:00:00',NOW())".format(matcher1.group(),json.dumps(attr).encode('utf-8').decode('unicode_escape'))
  118. # sqlhelper.insert(sql)
  119. # print('sql:%s' %sql)