一个小巧的MySQL Shell

mysql

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

时间: 2024-10-29 21:30:10

一个小巧的MySQL Shell的相关文章

一个简单的MySQL备份Shell脚本_Mysql

#!/bin/bash #this is a script of mysql backup if [ ! -d /mydata/data1/backup ] ;then mkdir /mydata/data1/backup fi cd /mydata/data1/backup file=$(find . -type f -mtime -7 | grep .*all.sql) #查找7天内是否有备份的文件 echo $file if [ -z $file ] ;then echo "backup

用c实现简单的shell-用讲过的各种C函数实现一个简单的交互式Shell

问题描述 用讲过的各种C函数实现一个简单的交互式Shell 1.给出提示符,让用户输入一行命令,识别程序名和参数并调用适当的exec函数执行程序,待执 行完成后再次给出提示符. 2.识别和处理以下符号: 简单的标准输入输出重定向(<和>):仿照例30.5 "wrapper",先dup2然后exec. 管道(|):Shell进程先调用pipe创建一对管道描述符,然后fork出两个子进程,一个子进程 关闭读端,调用dup2把写端赋给标准输出,另一个子进程关闭写端,调用dup2把

关于mysql shell脚本的问题

问题描述 关于mysql shell脚本的问题 第四行我想打印出结果,正确写法是什么,求大神帮忙!!! 解决方案 #!/bin/sh value=`mysql -uroot -proot -e "use powersystemview; select count(*) from alarminfo;"` echo $value exit 0 解决方案二: shell脚本内与mysql交互shell脚本中使用MySQLMysql压力测试shell脚本

打包-怎样写一个压缩解压Shell脚本

问题描述 怎样写一个压缩解压Shell脚本 文件的名字不能写死, 可以传入一个参数,打包指定的文件 求教各位大神怎么写 解决方案 #!/bin/sh tar zcvf $1.tar.gz $1 解决方案二: tar zcf foo.tgz foo 解决方案三: 主要看你想压缩成什么格式的. tar.gz, tar, tar.Z, zip, tar.z, etc. 传入两个参数,一个参数是压缩类型,一个是压缩的文件 下面是脚本里的一个压缩的写法. #!/bin/sh tar -zcvf $2.$1

一个数据库(mysql) 俩个项目跑 有什么好解决方案或者注意的问题?

问题描述 一个数据库(mysql)俩个项目跑有什么好解决方案或者注意的问题?一个项目是给app提供数据的.一个是web端请问这样做会有什么问题? 解决方案 解决方案二:应该没有什么问题,不管有多少个项目跑,因为对于数据库来说,操作数据库的都是平等的普通连接,它并不知道你是什么项目.解决方案三:设计上做好数据安全就行了,

分享一个入门级可控多线程shell脚本代码_linux shell

说到shell可控多线程,网上分享的大部分是管道控制的方案.这种方案,张戈博客也曾经实战并分享过一次:<Shell+Curl网站健康状态检查脚本,抓出中国博客联盟失联站点>,感兴趣的朋友可以看看. 分享一个入门级可控多线程shell脚本方案 下面张戈博客再分享另一种更容易理解的入门级可控多线程shell脚本方案:任务切割.各个击破. 先来 1 段场景描述: 某日,在鹅厂接到了这个任务,需要在Linux服务器中,对几千个IP进行一次Ping检测,只要取得ping可达的IP就好.如果单个IP去pi

自己写的一个小巧的Rating,源代码下载

看到AjaxToolkit有一个Rating控件,但鼠标移动时老是闪,不知道里面是否写得很复杂,于是自己动手,写一个小巧的Rating.源代码下载 鼠标拖一个上去设置属性,就已经把界面效果全部实现了,如图 ClickJsName为客户端的Js事件,用来定义单击的事件,参数只有一个,比如     <script type="text/javascript">function Mark(num){    alert(num);}    </script>

mysql shell

mysql 查询10分钟以内的数据:select *from t_agent where int_last_login>=CURRENT_TIMESTAMP - INTERVAL 10 MINUTE;   mysql关联多表进行update更新操作 UPDATE Track INNER JOIN MV ON Track.trkid=MV.mvid SET Track.is_show=MV.is_show WHERE trkid<6   等同于   UPDATE Track,MV SET Tra

推荐没有虚拟主机的小巧的Mysql数据库备份脚本(PHP)_Mysql

最近工作中常常需要备份远程服务器上的Mysql数据库到本机,一开始采用直接备份Mysql的data目录的办法,但由于编码不同的原因经常产生问题.后来朋友推荐我使用一个非常方便小巧的PHP程序--MyDB.一共包含三个文件: 1. mydb.php //DB类 复制代码 代码如下: <? class db{ var $linkid; var $sqlid; var $record; function db($host="",$username="",$passw