server_indexing.py 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. from .tool.func import *
  2. def server_indexing_2(conn, db_type):
  3. curs = conn.cursor()
  4. if db_type == 'sqlite':
  5. if admin_check() != 1:
  6. return re_error('/error/3')
  7. if flask.request.method == 'POST':
  8. admin_check(None, 'indexing')
  9. curs.execute(db_change("select name from sqlite_master where type = 'index'"))
  10. data = curs.fetchall()
  11. if data:
  12. for delete_index in data:
  13. print('Delete : ' + delete_index[0])
  14. sql = 'drop index if exists ' + delete_index[0]
  15. try:
  16. curs.execute(db_change(sql))
  17. except:
  18. pass
  19. else:
  20. curs.execute(db_change("select name from sqlite_master where type in ('table', 'view') and name not like 'sqlite_%' union all select name from sqlite_temp_master where type in ('table', 'view') order by 1;"))
  21. for table in curs.fetchall():
  22. curs.execute(db_change('select sql from sqlite_master where name = ?'), [table[0]])
  23. cul = curs.fetchall()
  24. r_cul = re.findall('(?:([^ (]*) text)', str(cul[0]))
  25. for n_cul in r_cul:
  26. print('Create : index_' + table[0] + '_' + n_cul)
  27. sql = 'create index index_' + table[0] + '_' + n_cul + ' on ' + table[0] + '(' + n_cul + ')'
  28. try:
  29. curs.execute(db_change(sql))
  30. except:
  31. pass
  32. conn.commit()
  33. return redirect()
  34. else:
  35. curs.execute(db_change("select name from sqlite_master where type = 'index'"))
  36. data = curs.fetchall()
  37. if data:
  38. b_data = load_lang('delete')
  39. else:
  40. b_data = load_lang('create')
  41. return easy_minify(flask.render_template(skin_check(),
  42. imp = [load_lang('indexing'), wiki_set(), custom(), other2([0, 0])],
  43. data = '''
  44. <form method="post">
  45. <button type="submit">''' + b_data + '''</button>
  46. </form>
  47. ''',
  48. menu = [['manager', load_lang('return')]]
  49. ))
  50. else:
  51. return redirect('/')