flightDB.py 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277
  1. import psycopg2
  2. import traceback
  3. from unitls.LogerinTxt import app_logger
  4. class flightDB():
  5. def __init__(self, host, port, user, password, database):
  6. self.conn = psycopg2.connect(
  7. host=host,
  8. port=port,
  9. user=user,
  10. password=password,
  11. database=database
  12. )
  13. self.c = self.conn.cursor()
  14. def initTable(self, tableName:str,primarykey:str,primarykeyStr:str,keyDict:dict):
  15. try:
  16. keyStr = ''
  17. num = 1
  18. for key in keyDict:
  19. if num !=len(keyDict):
  20. keyStr += '{} {},\n'.format(key,keyDict[key])
  21. else:
  22. keyStr += '{} {}'.format(key, keyDict[key])
  23. num +=1
  24. curStr ="""
  25. create table if not exists {} (
  26. {} {} ,
  27. {}
  28. )
  29. """.format(tableName, primarykey, primarykeyStr,keyStr)
  30. #print(curStr)
  31. self.c.execute(curStr)
  32. self.conn.commit()
  33. except Exception as e:
  34. app_logger.log_error(curStr)
  35. app_logger.log_error(e)
  36. print(traceback.format_exc())
  37. def insertData(self, tableName:str, data:dict, *args):
  38. try:
  39. #curStr1 = 'insert into {} '.format(tableName)
  40. num = 1
  41. curStr2 = ''
  42. for key in data:
  43. if num != len(data):
  44. curStr2+='{},'.format(key)
  45. else:
  46. curStr2+='{}'.format(key)
  47. num+=1
  48. curStr3 = ''
  49. num = 1
  50. for key in data:
  51. if num != len(data):
  52. curStr3+="'{}',".format(data[key])
  53. else:
  54. curStr3+="'{}'".format(data[key])
  55. num+=1
  56. curStr = """
  57. insert into {} ({})
  58. values ({})
  59. """.format(tableName, curStr2, curStr3)
  60. #print(curStr)
  61. self.c.execute(curStr)
  62. if args==():
  63. self.conn.commit()
  64. return "ok"
  65. except Exception as e:
  66. app_logger.log_error(curStr)
  67. app_logger.log_error(e)
  68. print(traceback.format_exc())
  69. return "fail"
  70. def lazyInsertData(self,tableName:str, data:dict):
  71. self.insertData(tableName, data, 'lazy')
  72. def lazydeleteTable(self,tablename:str):
  73. try:
  74. curStr = """delete from {}""".format(tablename)
  75. self.c.execute(curStr)
  76. except Exception as e:
  77. app_logger.log_error(curStr)
  78. app_logger.log_error(e)
  79. def lazyInsertData2(self,tableName:str, curStr2, curStr3):
  80. try:
  81. curStr = """insert into {} ({})values {}""".format(tableName, curStr2, curStr3)
  82. self.c.execute(curStr)
  83. except Exception as e:
  84. app_logger.log_error(curStr)
  85. app_logger.log_error(e)
  86. def lazyInsertData3(self,curStr1, curStr2, curStr3):
  87. try:
  88. curStr = """insert into display (ID, A, B)values (%s,'%s','%s')"""%(curStr1, curStr2, curStr3)
  89. self.c.execute(curStr)
  90. except Exception as e:
  91. app_logger.log_error(curStr)
  92. app_logger.log_error(e)
  93. def FunctionCommit(self):
  94. self.conn.commit()
  95. def FunctionRollback(self):
  96. self.conn.rollback()
  97. def deleteTable(self, tablename:str, *condition:str):
  98. try:
  99. if condition !=():
  100. curStr = """
  101. delete from {} where {}
  102. """.format(tablename, condition[0])
  103. else:
  104. curStr = """
  105. delete from {}
  106. """.format(tablename)
  107. self.c.execute(curStr)
  108. self.conn.commit()
  109. return "ok"
  110. except Exception as e:
  111. app_logger.log_error(curStr)
  112. app_logger.log_error(e)
  113. print(traceback.format_exc())
  114. return "fail"
  115. def copyTable(self, oldtablename:str, newTablename:str):
  116. try:
  117. curStr = """
  118. drop table {}
  119. """.format(newTablename)
  120. self.c.execute(curStr)
  121. self.conn.commit()
  122. except Exception as e:
  123. app_logger.log_error(curStr)
  124. app_logger.log_error(e)
  125. print(traceback.format_exc())
  126. def sortTable(self, tablename:str, tableKey:str, fn):
  127. try:
  128. curStr = """
  129. select * from {} order by {} {}
  130. """.format(tablename, tableKey, fn)
  131. #print(curStr)
  132. self.c.execute(curStr)
  133. return self.c.fetchall()
  134. except Exception as e:
  135. app_logger.log_error(curStr)
  136. app_logger.log_error(e)
  137. print(traceback.format_exc())
  138. def sort_queryTable(self, findkey:str,tablename:str, condition:str,tableKey:str, fn):
  139. try:
  140. curStr = """
  141. select {} from {} where {} order by {} {}
  142. """.format(findkey,tablename, condition,tableKey, fn)
  143. #print(curStr)
  144. self.c.execute(curStr)
  145. return self.c.fetchall()
  146. except Exception as e:
  147. app_logger.log_error(curStr)
  148. app_logger.log_error(e)
  149. print(traceback.format_exc())
  150. def sort_queryTable2(self, findkey:str,tablename:str, condition:str,tableKey:str, fn,tableKey1:str, fn1):
  151. try:
  152. curStr = """
  153. select {} from {} where {} order by {} {},{} {}
  154. """.format(findkey,tablename, condition,tableKey, fn,tableKey1, fn1)
  155. #print(curStr)
  156. self.c.execute(curStr)
  157. return self.c.fetchall()
  158. except Exception as e:
  159. app_logger.log_error(curStr)
  160. app_logger.log_error(e)
  161. print(traceback.format_exc())
  162. def queryTabel(self, tablename: str, key: str, condition: str):
  163. try:
  164. # 检查表是否存在
  165. curStr1 = """
  166. SELECT EXISTS (
  167. SELECT * FROM pg_catalog.pg_tables
  168. WHERE tablename = %s AND schemaname = 'public'
  169. );
  170. """
  171. self.c.execute(curStr1, (tablename.lower(),))
  172. table_exists = self.c.fetchone()[0]
  173. if table_exists:
  174. # 防止SQL注入,使用参数化查询
  175. curStr = f"SELECT {key} FROM {tablename} WHERE {condition}"
  176. self.c.execute(curStr)
  177. return self.c.fetchall()
  178. else:
  179. print(f"表 '{tablename}' 不存在")
  180. return [] # 返回空列表而不是None,便于统一处理
  181. except Exception as e:
  182. app_logger.log_error(e)
  183. print(traceback.format_exc())
  184. self.conn.rollback()
  185. return []
  186. def getAlldata(self, tablename:str):
  187. try:
  188. curStr = """select * from {}""".format(tablename)
  189. self.c.execute(curStr)
  190. return self.c.fetchall()
  191. except Exception as e:
  192. app_logger.log_error(curStr)
  193. app_logger.log_error(e)
  194. print(traceback.format_exc())
  195. def upDateItem(self, tablename:str, dateDic:dict, condition:str, *args):
  196. try:
  197. setStr = ''
  198. for key in dateDic:
  199. if tablename == 'display':
  200. setStr += '{}={},'.format(key, str(dateDic[key]).replace("'","''"))
  201. else:
  202. setStr += '{}={},'.format(key, dateDic[key])
  203. if tablename == 'display':
  204. setStr = setStr[:-1].replace('"',"'")
  205. else:
  206. setStr = setStr[:-1]
  207. curStr = """
  208. update {} set {} where {}
  209. """.format(tablename, setStr, condition)
  210. #print(curStr)
  211. if setStr !="":
  212. self.c.execute(curStr)
  213. if args == ():
  214. self.conn.commit()
  215. except Exception as e:
  216. app_logger.log_error(curStr)
  217. app_logger.log_error(e)
  218. print(traceback.format_exc())
  219. def lazyUpdateItem(self,tablename:str, dateDic:dict, condition:str):
  220. self.upDateItem(tablename,dateDic,condition,'lazy')
  221. def getSingledata(self,findkey:str,tablename:str):
  222. try:
  223. curStr = """
  224. select {} from {}
  225. """.format(findkey,tablename)
  226. self.c.execute(curStr)
  227. return self.c.fetchall()
  228. except Exception as e:
  229. app_logger.log_error(curStr)
  230. app_logger.log_error(e)
  231. print(traceback.format_exc())
  232. def deleteSingledata(self,tablename:str,findkey:str):
  233. try:
  234. curStr = """
  235. delete from {} where {}
  236. """.format(tablename,findkey)
  237. self.c.execute(curStr)
  238. #print(curStr)
  239. self.conn.commit()
  240. except Exception as e:
  241. app_logger.log_error(curStr)
  242. app_logger.log_error(e)
  243. print(traceback.format_exc())
  244. def close(self):
  245. try:
  246. self.conn.close()
  247. except Exception as e:
  248. app_logger.log_error(e)
  249. print(traceback.format_exc())