import tarfile import os.path import os import codecs import sys import re reload(sys) sys.setdefaultencoding('utf-8') def LoadMySQLdb(): import urllib2 print "Error, required package MySQLdb is missing." print "Download Required Package from Internet ....." ver=float(".".join(sys.version.split(".")[:2])) if(ver==2.5 and os.name=='nt'): filename='MySQL-python-1.2.2.win32-py2.5.exe' try: src = urllib2.urlopen("http://downloads.sourceforge.net/mysql-python/"+filename) except: print """ [Error] Can't download MySQLdb module from internet. Check Internet connection and try again, or download it from http://downloads.sourceforge.net/mysql-python/ manually. """ sys.exit(1) print "Save data to local file..." f=open(filename,'wb') f.write(src.read()) f.close() print "Launch the Installation from MySQLdb module..." os.spawnl(os.P_WAIT, filename) print "Begin to install TransHelp ..." import MySQLdb os.remove(filename) else: print "please install python-mysql-db package from internet by your self" exit(1) try: import MySQLdb except: LoadMySQLdb() import MySQLdb path=raw_input('Installation Path [transhelp]: ') if (not path.strip()): path='transhelp'; if(os.path.exists(path)): YN=raw_input('Folder already exists, overwrite it? [Y/N]: ') if(not YN.upper()=="Y"): print "Installation abort." sys.exit (1) else: try: os.mkdir(path) except: print "Unable to create new folder in %s, installation abort." % path sys.exit (1) # Ask for mysql connnection information mysqladdr=raw_input('Address of mysql server [localhost]: ') if (not mysqladdr.strip()): mysqladdr='localhost'; mysqllogin=raw_input('Login name of mysql server [root]: ') if (not mysqllogin.strip()): mysqllogin='root'; mysqlpwd=raw_input('Password for logining mysql server ['']: ') if (not mysqlpwd.strip()): mysqlpwd=''; mysqldb=raw_input('The name of database in mysql server [transhelp]: ') if (not mysqldb.strip()): mysqldb='transhelp'; #rc.read('setting.inc') print "Test Mysql connection: ... ", try: db = MySQLdb.connect(host=mysqladdr, user=mysqllogin, passwd=mysqlpwd) cursor = db.cursor() cursor.execute("CREATE DATABASE IF not exists %s character set utf8 COLLATE utf8_unicode_ci" % mysqldb) cursor.close() db.close() db = MySQLdb.connect(host=mysqladdr, user=mysqllogin, passwd=mysqlpwd,db=mysqldb) cursor = db.cursor() cursor.execute("SET NAMES 'utf8'") except Error, e: print "Error %d: %s" % (e.args[0], e.args[1]) sys.exit (1) print " success " print "Extracting files to %s ... " % path tar = tarfile.open("TransHelp.tar.gz") tar.extractall(path) tar.close() arf = codecs.open(('%s/sql/Transhelp.sql' % path),encoding='utf-8') print ('Executing %s/sql/Transhelp.sql' % path), line = arf.readline() sqlstr="" while (line): #print line if(len(line)>2 and not line[:2] =="--"): sqlstr=sqlstr+line.strip().strip("\r\n").encode('utf8') if(line.strip().strip("\r\n")[-1:]==';'): try: cursor.execute(sqlstr) except MySQLdb.Error, e: print "Error %d: %s" % (e.args[0], e.args[1]) sys.exit (1) print "...", sqlstr="" line = arf.readline() db.commit() cursor.close() db.close() arf.close print "done." print "Writing config file...." wf = codecs.open(('%s/setting.inc' % path),'wb',encoding='utf-8') wf.write('#Db connection Setting\n') wf.write('DB_Addr %s\n' % mysqladdr) wf.write('DB_Login %s\n' % mysqllogin) if (mysqlpwd): wf.write('DB_Pwd %s\n' % mysqlpwd) else: wf.write('#DB_Pwd\n') wf.write('DB_Name %s\n' % mysqldb) if os.name=="nt": wf.write('PythonDir "%s\\"\n' % os.path.normpath(sys.exec_prefix)) else: wf.write('PythonDir \n') print "Installation complete..."