一个小巧的MySQL Shell

原创 2004年10月28日 11:08:00
#!/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 "Can't 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 "Can't 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)

一个小巧的Python Shell

.comment {color:#009900}.keyword {color:#0000FF; font-weight:bold}.string {color:#999999}.number {co...
  • nethermit
  • nethermit
  • 2004年10月28日 11:07
  • 2058

小巧易用的 LINUX 发行版

Linux的世界是个多姿多彩的世界,我们知道SUSE,RedHat,Mandriva,Ubuntu,Debian……但这些还仅仅是一小部分……更多Linux发行版,请关注……简介摘自:Distrowa...
  • welcomejzh
  • welcomejzh
  • 2008年06月08日 20:05
  • 3255

一款小巧的截图软件-xmoon snap

用了很多截图软件都觉得不太好用,不是速度慢就是太过臃肿,于是就自己用易语言写了个截图软件=w= 基本界面: 点击右上角的设置按钮弹出的设置界面: 软件特色很少,还有各种各样奇怪的bu...
  • moonmagian
  • moonmagian
  • 2014年03月01日 18:56
  • 1777

[原创]介绍几款小巧的Linux发行版

介绍几款小巧的Linux发行版作者:heiyeluren博客:http://blog.csdn.net/heiyeshuwu时间:2006-11-5Linux是可定制性非常强的操作系统,普通到PC机上...
  • heiyeshuwu
  • heiyeshuwu
  • 2006年11月05日 11:21
  • 10157

一款小巧的Java IDE - Gel

          在《程序员》杂志2006年第4期看到介绍一篇介绍 Free Java IDE的文章,里面提到了Gel这个编译器。于是上网搜了一下,果然找到了,官方网址是:http://memesc...
  • pascal_sunhong
  • pascal_sunhong
  • 2006年04月04日 15:35
  • 2884

463种生活小巧门(超全)

463种生活小窍门1 、生活窍门:巧用牙膏6:若有小面积皮肤损伤或烧伤、烫伤,抹上少许牙膏,可立即止血止痛,也可防止感染,疗效颇佳。2 、生活窍门:巧除纱窗油腻3:可将洗衣粉、吸烟剩下的烟头一起放在水...
  • accp_fangjian
  • accp_fangjian
  • 2006年11月29日 16:47
  • 25343

[原创] 推荐介绍几款小巧的Web Server程序

偶然看到几个小巧有趣的Web Server程序,觉得有必要拿来分享一下,让大家除了知道Apache、IIS之外,原来还有更多有趣的选择。主要介绍了:micro_httpd、mini_httpd、tht...
  • heiyeshuwu
  • heiyeshuwu
  • 2007年08月22日 10:38
  • 7367

如何在shell中操作(连接)mysql数据库?

我知道的有如下两种方式可以在shell中访问操作mysql数据库 1. mysql -uusername -ppasswd -e "command;command" [root@localhost...
  • hit_hlj_sgy
  • hit_hlj_sgy
  • 2013年07月16日 15:43
  • 8189

几个小了的IoC容器

在一本书上看到的介绍,虽然没有用过,不过还是放上来,以备以后需要 1. Ninject: http://www.ninject.org 2. Castle Windsor: http:...
  • liyifei21
  • liyifei21
  • 2013年05月28日 22:38
  • 424

shell 统计mysql数据库的表的行数

shell 统计mysql数据库的表的行数 #!/bin/bash echo -n "MySQL username: " ; read username echo -n "MySQL passwo...
  • e421083458
  • e421083458
  • 2014年11月13日 11:16
  • 3086
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一个小巧的MySQL Shell
举报原因:
原因补充:

(最多只允许输入30个字)