我的一亩三分地 我就喜欢!
13fen  设为主页
 收藏本站
 
当前位置: > 一亩三分地:首页 > 综合文库 > 数据库 > MySql > 一个小巧的MySQL Shell
热门文章排行
热门文章排行 MySQL服务器的启动与停止(12-15)
如何将Access和Excel导入到Mysql中之(11-16)
如何将Access和Excel导入到Mysql中之(11-16)
redhat8 mysql安装具体过程(12-15)
DBI/mysql FAQ(11-21)
精采文章排行
精采文章排行 用于 SELECT 和 WHERE 子句的函数(11-16)
数据操纵:SELECT, INSERT, UPDATE, (11-16)
数据定义:CREATE、DROP、ALTER(11-16)
基本的 MySQL 用户实用命令(11-16)
MySQL数据的导出和导入工具:mysqldum(11-16)
技术专题推荐
网管论坛交流
 

一个小巧的MySQL Shell 

作者:   来源:   点击:   日期:2007-11-21

#!/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)

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【论坛讨论

   相关文章:
·如何修改mysql数据文件位置 ·MYSQL初学者使用指南与介绍
·MySQL数据目录结构 ·MySQL数据导入导出方法与工具介绍(3-Exp
·MySQL数据导入导出方法与工具介绍(1- my ·Mysql的常用命令

   文章评论:(条)
  
 请留名: 匿名评论   点击查看所有评论 网管论坛
 

  责任编辑:一分  声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。