python 交互式命令行数据库连接助手 -- mysql、sql server (mssql)、redis
python 交互式命令行数据库连接助手
目前支持mysql 、mssql 、redis
完整代码已上传至github https://github.com/b4zinga/PythonTools/blob/master/dbcli.py
0. 操作示例
python 连接mysql:
python连接mssql:
python连接redis
帮助
1. python 连接mssql
def conn(self):
db = pymssql.connect(server=self.host, port=int(self.port), user=self.user, password=self.passwd)
return db
2. python 连接mysql
def conn(self):
db = pymysql.connect(host=self.host, port=int(self.port), user=self.user, password=self.passwd, charset='utf8')
return db
3. python 连接redis
def conn(self):
sock = socket.socket()
try:
sock.connect((self.host, int(self.port)))
except Exception as err:
print(err)
sys.exit(0)
return sock
def exec(self, sql):
if sql=='':
return
sql = self.makeCmd(sql)
try:
self.db.send(sql.encode())
while True:
recv = self.db.recv(1024)
print(self.handleRecv(recv))
if len(recv)<1024: # 循环接收1024, 如果长度小于1024则默认后面已经无内容,break
break
except Exception as err:
print(err)
@staticmethod
def makeCmd(cmd):
command = "*"
cmd = cmd.split()
command = command + str(len(cmd)) + '\r\n'
for c in cmd:
command = command + '$' + str(len(c)) + '\r\n' + c + '\r\n'
return command
@staticmethod
def handleRecv(recvdate):
recvdate = recvdate.decode()
if recvdate.startswith('*'):
recvdate=recvdate[2:].strip('\r\n')
recvdate = re.sub('\$\d+\\r\\n', '', recvdate)
return recvdate
n. Tips
- mssql命令
查询所有数据库: SELECT Name FROM Master..SysDatabases ORDER BY Name
查询某数据库内所有表 : SELECT Name FROM DatabaseName..SysObjects Where XType='U' ORDER BY Name
XType='U' : 表示所有用户表;
XType='S' : 表示所有系统表;
python 交互式命令行数据库连接助手 -- mysql、sql server (mssql)、redis的更多相关文章
- 在非SQL客户端使用命令行方式定期连接SQL Server 服务器并模拟用户查询操作,同时输出信息内容
一个很长的标题,实现的功能就是尽量使用非人力的方式模拟人去做一件事情,为了便于记录,将他们输出成文件方便查阅. 图形界面方式,使用微软自己的ConnMaker.exe,或者Microsoft 数据连接 ...
- SQL Server2008 R2命令行启动及停止SQL服务的方法
===================================================== 在 SQL Server中,想要启动或停止SQL Server服务,通过SQL Server ...
- mysql命令行的导入导出sql,txt,excel(都在linux或windows命令行操作)(转自筑梦悠然)
原文链接https://blog.csdn.net/wuhuagu_wuhuaguo/article/details/73805962 Mysql导入导出sql,txt,excel 首先我们通过命令行 ...
- Python多版本情况下四种快速进入交互式命令行的操作技巧
因为工作需求或者学习需要等原因,部分小伙伴的电脑中同时安装了Python2和Python3,相信在Python多版本的切换中常常会遇到Python傻傻分不清楚的情况,今天小编整理了四个操作技巧,以帮助 ...
- linux命令行下导出导入.sql文件
一.导出数据库用mysqldump命令(注意mysql的安装路径,即此命令的路径):1.导出数据和表结构(以管理员身份运行): ------------------------------------ ...
- windows 下命令行启动停止mysql
MySQL比较好玩一点就是它可以用多种方式启动,当然它也可以用多种方式关闭.下面我就mysql的几种启动方式简单的谈一谈,希望可以给大家提供一些参考. 第一种,用mysqld-nt来启动. 在没有进行 ...
- 解决php的交互式命令行不能正常启动的问题兼介绍psysh
今天在自己的mac电脑上试着启动php的交互式命令行,发现敲下命令后一直卡在提示进入的地方,但没有出现已经进入的提示符,百度了下应该是与readline有关. 于是安装php的readline扩展,在 ...
- 使用mysql监视器即命令行下的mysql
命令行下登录mysql 首先必须在alias下有设置mysql, 我的mysql安装的位置在/usr/local/mysql 于是做了一个别名: alias mysql='/usr/local/mys ...
- centos 宝塔 使用命令行快速导入数据库sql
先将sql文件上传到服务器,例如上传到www文件夹 然后打开命令行工具 输入 mysql -u 数据库用户名 -p 然后复制密码进去 然后输入 use 数据库名 回车 然后输入 source /www ...
随机推荐
- 没搞懂的package.json
事情是这样的,今天上午,后端同学 clone 了我们的一个小程序项目,希望到自己的电脑上跑起来. 然而,令人尴尬的是,他在 npm install 之后,项目并没有如愿运行,并抛出一个大大的错误. 后 ...
- 微信小程序-canvas绘制文字实现自动换行
在使用微信小程序canvas绘制文字时,时常会遇到这样的问题:因为canvasContext.fillText参数为 我们只能设置文本的最大宽度,这就产生一定的了问题.如果我们绘制的文本长度不确定或者 ...
- ZOJ Problem Set - 1730 Crazy Tea Party
#include<cstdio> int main(){ int T,n; scanf("%d",&T); while(T--){ scanf("%d ...
- 如何用vue-router为每个路由配置各自的title
传统方法 以前在单页面路由中,就只能在html文件中定一个固定的网站的title.如果想要动态的去修改,需要使用如下的方法. document.title = '这是一个标题'; 这样会让我们做很多无 ...
- 野路子Java开发的一篇随笔
园子的朋友们,一年半的时间大家过的还好吧? 流水它带走光阴的故事改变了我们,再次的见面我们又历经了多少的路程,落花流水,冷暖自知,这一年半,关于工作上的关键词只有两个:加班(996弱多了) ...
- MFC应用技术之CTreeControl的使用
MFC应用技术之CTreeControl的使用 一丶MFC添加树控件.添加父节点跟子节点. MFC上面放一个树控件.并未这个树控件绑定变量.然后添加一个按钮.按钮的作用就是添加父节点跟子节点. PS: ...
- AspectJ在Spring中的使用
在上一篇AspectJ的入门中,简单的介绍了下AspectJ的使用,主要是以AspectJ的example作为例子.介绍完后也留下了几个问题:1)我们在spring中并没有看到需要aspectj之类的 ...
- 记一次SSM项目小结(一)
记一次SSM项目小结(一) ssm框架 环境配置 服务器配置 解决方法 拦截器重定向到localhost nginx和tomcat中session失效 mybatis的xml文件不生效 数据库用户创 ...
- java 开发 websocket 网页端聊天室
博客地址:https://ainyi.com/67 WebSocket协议是基于TCP的一种新的网络协议.它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端. ...
- Java中关于Map的使用(HashMap、ConcurrentHashMap)
在日常开发中Map可能是Java集合框架中最常用的一个类了,当我们常规使用HashMap时可能会经常看到以下这种代码: Map<Integer, String> hashMap = new ...