python 交互式命令行數(shù)據(jù)庫連接助手
目前支持mysql 惠毁、mssql 犹芹、redis
完整代碼已上傳至github https://github.com/b4zinga/PythonTools/blob/master/dbcli.py
0. 操作示例
python 連接mysql:
連接mysql
python連接mssql:
連接mssql
python連接redis
連接redis
幫助
image
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: # 循環(huán)接收1024, 如果長度小于1024則默認后面已經(jīng)無內(nèi)容,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命令
查詢所有數(shù)據(jù)庫: SELECT Name FROM Master..SysDatabases ORDER BY Name
查詢某數(shù)據(jù)庫內(nèi)所有表 : SELECT Name FROM DatabaseName..SysObjects Where XType='U' ORDER BY Name
XType='U' : 表示所有用戶表;
XType='S' : 表示所有系統(tǒng)表;