1#!/usr/local/bin/python3.8 2# -*- coding: utf-8 -*- 3# Copyright (c) 2012-2016 Seafile Ltd. 4 5import os 6import sys 7import MySQLdb 8 9import settings 10 11try: 12 dbname = os.environ['DBNAME'] 13 dbuser = os.environ['DBUSER'] 14 dbpasswd = os.environ['DBPASSWD'] 15except: 16 sys.stderr.write('Environment not set! Exit\n') 17 sys.exit(1) 18 19def check_settings(): 20 if settings.DATABASE_ENGINE == 'mysql': 21 sys.stderr.write('[ERROR] Current settings is mysql, need sqlite settings\n') 22 sys.exit(1) 23 24def do_create(): 25 root_passwd = input("Please enter root password to create database %s: " % dbname) 26 27 conn = MySQLdb.Connect(host='localhost', user='root', passwd=root_passwd) 28 cursor = conn.cursor() 29 30 create_cmd = ( "CREATE DATABASE IF NOT EXISTS `%s` default charset utf8 COLLATE utf8_general_ci;") % (dbname) 31 grant_cmd = ("grant all privileges on %s.* to '%s'@localhost identified by '%s';") % (dbname, dbuser, dbpasswd) 32 33 try: 34 cursor.execute(create_cmd) 35 cursor.execute(grant_cmd) 36 except: 37 pass 38 39 cursor.close() 40 conn.close() 41 42def do_delete(prefix): 43 cmd = ('echo "select concat(\'drop table \', table_name ,\';\') from TABLES where TABLE_SCHEMA =\'%s\' and table_name like \'%s_%%\' ;" | mysql -u %s -p%s information_schema | sed -n \'2,$p\' | mysql -u %s -p%s %s') % (dbname, prefix, dbuser, dbpasswd, dbuser, dbpasswd, dbname) 44 try: 45 output = os.popen(cmd).read() 46 except: 47 pass 48 49if __name__=="__main__": 50 # check current settings.py 51 check_settings() 52 53 # create database if not exists 54 do_create() 55 56 # detele all seahub tables 57 for app in settings.INSTALLED_APPS: 58 app_name = app.split('.')[-1] 59 do_delete(app_name) 60 do_delete('django') 61 62 print('[Delete seahub tables...Done]') 63 64