
#!/usr/bin/python # -*- coding: cp936 -*-
################################# # written by caocao # # caocao@eastday.com # # http://nethermit.yeah.net # #################################
import sys, string, os from types import * import mysqldb
print "written by caocao" print "caocao@eastday.com" print "http://nethermit.yeah.net" print
def iif(expression, whentrue, whenfalse): if expression: return whentrue else: return whenfalse
class mysqltest: def __init__(self, host="localhost", user="root", passwd="", db=""): self.connection=none self.host=host self.user=user self.passwd=passwd self.db=db self.result=none
print "-"*40 print "mysql shell v 1.0" print "usage: python mysql.shell.py [host] [user] [passwd(% is empty)] [db]" print "connect..." try: self.connection=mysqldb.connect(host=self.host, user=self.user, passwd=self.passwd, db=self.db) except: print "cant connect to mysql server.\nplease make sure your username or password is right." sys.exit(1) print "-"*40 print self.printcomment("connection", "get_server_info") print self.printcomment("connection", "get_host_info") print self.printcomment("connection", "get_proto_info") print self.printcomment("connection", "info") print self.printcomment("connection", "character_set_name") print self.printcomment("connection", "thread_id") print self.printcomment("connection", "stat")
def __del__(self): if self.connection!=none: self.connection.close() print "-"*40 print "quit..."
def printcomment(self, instance, function): return "%s = %s" % (string.rjust(function, 18), eval("self."+instance+"."+function+"()"))
def printall(self): output, row="", self.result.fetch_row(0) for i in range(self.result.num_fields()): output+=repr(self.result.describe()[i][0])+"\n" for i in range(self.result.num_rows()): for j in range(self.result.num_fields()): output+=iif(type(row[i][j]) is stringtype, row[i][j], repr(row[i][j]))+"\n" return output
def runsql(self, querystring="show databases"): print "-"*40 try: self.connection.query(querystring) except: print "cant run sql." else: self.result=self.connection.store_result() print self.printcomment("connection", "field_count") print self.printcomment("connection", "affected_rows") print self.printcomment("connection", "insert_id") print self.printcomment("result", "num_fields") print self.printcomment("result", "num_rows") print self.printcomment("result", "field_flags") print "-"*40 print self.printall()
if __name__=="__main__": argarray=sys.argv del argarray[0] test=eval(("mysqltest(\"%s\")" % "\",\"".join(argarray)).replace("%", "")) while true: try: command=string.strip(raw_input("ps mysql>"), " ") commandlow=string.lower(command) except eoferror: break else: if commandlow=="exit" or commandlow=="quit": break elif commandlow=="": continue else: test.runsql(command)
|