flaskDBUtils4PG.py 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  1. import datetime
  2. import time
  3. from Functions.DButilsFunction import flightDB
  4. loginsts = 'loginsts'
  5. logintoken = 'logintoken'
  6. infolog = 'infolog'
  7. IpPhoneip='IpPhoneip'
  8. callingPhone='callingPhone'
  9. vin="vin"
  10. class flaskDB(flightDB):
  11. def __init__(self, host, port, user, password, database):
  12. super(flaskDB, self).__init__(host=host,port=port,user=user, password=password, database=database)
  13. # self._dir = './DATABASE'
  14. # self.conn = sqlite3.connect(os.path.join(self._dir,DBName))
  15. # self.c = self.conn.cursor()
  16. def insertManyData(self, sql:str, data_list:list):
  17. self.c.executemany(sql, data_list)
  18. self.conn.commit()
  19. def initIpPhoneip(db:flaskDB):
  20. db.initTable(IpPhoneip, 'ID','INTEGER PRIMARY KEY NOT NULL', {'ip':'text','token':'text'})
  21. result = db.getAlldata(IpPhoneip)
  22. if result == []:
  23. db.insertData('IpPhoneip', {'ID':1,'ip':'None','token':'None'})
  24. def initVin(db:flaskDB):
  25. db.initTable(vin, 'ID','INTEGER PRIMARY KEY NOT NULL', {'VINA':'text','VINB':'text'})
  26. result = db.getAlldata(vin)
  27. if result == []:
  28. db.insertData('vin', {'ID':1, 'VINA': '%s' %time.time(), 'VINB': '%s' %time.time()})
  29. db.insertData('vin', {'ID':2, 'VINA': '%s' %time.time(), 'VINB': '%s' %time.time()})
  30. db.insertData('vin', {'ID':3, 'VINA': '%s' %time.time(), 'VINB': '%s' %time.time()})
  31. def initcallingPhone(db:flaskDB):
  32. db.initTable(callingPhone, 'ID','INTEGER PRIMARY KEY NOT NULL', {'phonenumber':'text','time':'text'})
  33. result = db.getAlldata(callingPhone)
  34. if result == []:
  35. db.insertData('callingPhone', {'ID':1,'phonenumber':'None','time':'None'})
  36. def initLoginsts(db:flaskDB):
  37. db.initTable(loginsts, 'ID','INTEGER PRIMARY KEY NOT NULL', {'sts':'int'})
  38. result = db.getAlldata(loginsts)
  39. if result == []:
  40. db.insertData('loginsts', {'ID':1,'sts':0})
  41. def initLoginToken(db:flaskDB):
  42. db.initTable(logintoken, 'ID', 'INTEGER PRIMARY KEY NOT NULL', {'username':'text','token': 'text'})
  43. result = db.getAlldata(logintoken)
  44. if result == []:
  45. db.insertData(logintoken, {'ID':1, 'username':'None','token':'None'})
  46. def initInfolog(db:flaskDB):
  47. db.initTable(infolog, 'ID', 'SERIAL PRIMARY KEY', {'datatime':'text', 'sts':'text'})
  48. def checkLogin(db:flaskDB):
  49. initLoginsts(db)
  50. result = db.queryTabel(loginsts, 'sts', 'ID=1')
  51. if result[0][0] == 1:
  52. #print('已登录')
  53. return 1
  54. else:
  55. return 0
  56. def logout(db:flaskDB):
  57. initLoginsts(db)
  58. initLoginToken(db)
  59. db.upDateItem(loginsts, {'sts': 0}, 'ID=1')
  60. db.upDateItem(logintoken, {'username': "'None'", 'token': "'None'"}, 'ID=1')
  61. def setIpPhone(db:flaskDB,ip,token):
  62. initIpPhoneip(db)
  63. db.upDateItem(IpPhoneip, {'ip':"'%s'"%ip, 'token':"'{}'".format(token)}, 'ID=1')
  64. def callingphoneUpdate(db:flaskDB,phonenumber,time):
  65. initcallingPhone(db)
  66. db.upDateItem(callingPhone, {'phonenumber':"'%s'"%phonenumber, 'time':"'%s'"%time}, 'ID=1')
  67. def getPhoneNum(db:flaskDB):
  68. initcallingPhone(db)
  69. res = db.queryTabel(callingPhone, "phonenumber", "ID = '1'")[0][0]
  70. return res
  71. def getVin(db:flaskDB,mode,num):
  72. initVin(db)
  73. if num == 1: #昨天
  74. res = db.queryTabel(vin, "VIN%s"%mode, "ID = '1'")[0][0]
  75. elif num == 2: #今天
  76. res = db.queryTabel(vin, "VIN%s"%mode, "ID = '2'")[0][0]
  77. elif num == 3: #明天
  78. res = db.queryTabel(vin, "VIN%s"%mode, "ID = '3'")[0][0]
  79. return res
  80. def getallVin(db:flaskDB):
  81. initVin(db)
  82. res=[]
  83. for mode in ["A","B"]:
  84. for num in [1,2,3]:
  85. res.append(db.queryTabel(vin, "VIN%s"%mode, "ID = '%s'"%num)[0][0])
  86. return res
  87. def updateVin(db:flaskDB,mode,num):
  88. initVin(db)
  89. Vin=time.time()
  90. if num ==1:
  91. db.upDateItem(vin, {'VIN%s'%mode:"'%s'"%Vin}, 'ID=1')
  92. elif num ==2:
  93. db.upDateItem(vin, {'VIN%s'%mode:"'%s'"%Vin}, 'ID=2')
  94. elif num ==3:
  95. db.upDateItem(vin, {'VIN%s'%mode:"'%s'"%Vin}, 'ID=3')
  96. return Vin
  97. def updateALlVin(db:flaskDB):
  98. initVin(db)
  99. Vin=time.time()
  100. for mode in ["A","B"]:
  101. for num in [1,2,3]:
  102. db.upDateItem(vin, {'VIN%s'%mode:"'%s'"%Vin}, 'ID=%s'%num)
  103. def getIpPhoneip(db:flaskDB):
  104. initIpPhoneip(db)
  105. res1={"ip":"","token":""}
  106. res=db.queryTabel(IpPhoneip, "*", "ID = '1'" )
  107. if res[0][2] != None:
  108. res1={"ip":"%s"%res[0][1],"token":"%s"%res[0][2]}
  109. return res1
  110. else:
  111. return res1
  112. def login(db:flaskDB, user, token):
  113. initLoginsts(db)
  114. initLoginToken(db)
  115. db.upDateItem(loginsts,{'sts':1}, 'ID=1')
  116. db.upDateItem(logintoken,{'username':user,'token':"'{}'".format(token)}, 'ID=1')
  117. def getToken(db:flaskDB):
  118. initLoginToken(db)
  119. result = db.getAlldata(logintoken)
  120. #print(result)
  121. return result[0][2]
  122. def insertinfolog(db:flaskDB, datatime, sts):
  123. initInfolog(db)
  124. db.insertData(infolog,{'datatime':"{}".format(datatime), 'sts':"{}".format(sts)})
  125. def updatecheck(db:flaskDB):
  126. now = datetime.datetime.now()
  127. testtime = (now - datetime.timedelta(minutes=6)).strftime("%Y%m%d %H:%M:%S")
  128. log_str = db.queryTabel(infolog, "ID", "datatime >'%s' and sts = '200'" % testtime)
  129. if log_str ==[]:
  130. updatests="0"
  131. else:
  132. updatests="1"
  133. return updatests
  134. def clearinfolog(db:flaskDB):
  135. initInfolog(db)
  136. now = datetime.datetime.now()
  137. passtime = (now - datetime.timedelta(days=1)).strftime("%Y%m%d %H:%M:%S")
  138. log_str = db.queryTabel(infolog, "ID", "datatime <'%s'" % passtime)
  139. if log_str !=[]:
  140. for i in log_str:
  141. db.deleteSingledata(infolog, "ID='%s'" % i[0])
  142. def getinfolog(db:flaskDB):
  143. initLoginsts(db)
  144. result = db.getAlldata(infolog)
  145. #print(result)
  146. return result
  147. def testInsertMany(db:flaskDB):
  148. initInfolog(db)
  149. sql = "insert into infolog (datatime, sts) values (?, ?);"
  150. data_list = []
  151. for i in range(1000):
  152. nowDay = datetime.datetime.now()
  153. nowDayStr = nowDay.strftime("%Y%m%d")
  154. nowStr = nowDay.strftime("%Y%m%d %H:%M:%S")
  155. data_list.append((nowStr, '200'))
  156. time1 = time.time()
  157. db.insertManyData(sql, data_list)
  158. #print("插入多条数据:{}".format(time.time()-time1))
  159. def testInsert(db:flaskDB):
  160. for i in range(1000):
  161. nowDay = datetime.datetime.now()
  162. nowDayStr = nowDay.strftime("%Y%m%d")
  163. nowStr = nowDay.strftime("%Y%m%d %H:%M:%S")
  164. insertinfolog(db, nowStr, '200')
  165. if __name__ == '__main__':
  166. flaskDB = flaskDB(host='192.168.2.65',
  167. port='9527',
  168. #host='101.42.5.211', #测试服务器
  169. #port='5444',
  170. user='user1',
  171. password='a123456s',
  172. database="flaskDatabase"
  173. )
  174. initLoginsts(flaskDB)
  175. # flaskDB.insertData('loginsts', {'ID':1,'sts':1})
  176. # checkLogin(flaskDB)
  177. # login(flaskDB, '022673', '7de7ce62-e02f-4f9e-bcec-03b9084e890d')
  178. # checkLogin(flaskDB)
  179. # logout(flaskDB)
  180. #
  181. # getToken(flaskDB)
  182. testInsertMany(flaskDB)
  183. time1 = time.time()
  184. testInsert(flaskDB)
  185. print('插入时间:{}'.format(time.time()-time1))