python脚本连接数据库_python脚本连接mysql

该博客介绍了一个Python脚本,用于解析URL格式的数据库连接信息,并提供命令行快捷方式连接MySQL数据库。脚本通过`dbconf.py`配置文件管理多个数据库连接,并允许用户自定义连接。使用`ln -s`命令可以将脚本链接到PATH路径中,方便通过命令行快速调用。
摘要由CSDN通过智能技术生成

#!/usr/bin/python

#coding=gbk

from dbconf import dbconf

from urlparse import urlparse

import os, sys

import re

def warning(str):

print '\033[1;31mWARNING: %s\033[0m' %str

def info(str):

print '\033[0;33m%s\033[0m' %str

def parse(url):

username = ''

password = ''

host = ''

port = 3306

db = ''

if url.startswith("mysql://"):

url = url[8:]

p = re.compile("[:@/]")

arr = p.split(url)

if len(arr) == 5:

username = arr[0]

password = arr[1]

host = arr[2]

port = arr[3]

db = arr[4]

if len(arr) == 7:

username = arr[0]

password = ''.join([arr[1], '@', arr[2], '@', arr[3]])

host = arr[4]

port = arr[5]

db = arr[6]

return {

'user' : username,

'password' : password,

'host' : host,

'port' : port,

'db' : db,

}

def init(conf):

map = {}

desc = {}

for i in conf:

conn = parse(i['url'])

for j in i['name']:

if j in map:

warning('duplicate key %s!' % j)

map[j] = conn

if 'desc' in i:

desc[j] = '[%s]%s' %(conn['host'], i['desc'])

return map, desc

def initusermap():

fn = os.path.join(os.environ['HOME'], 'bin', 'userdbconf.py');

if os.path.exists(fn):

sys.path.append(os.path.dirname(fn))

from userdbconf import dbconf

for i in dbconf:

dbconf[i] = parse(dbconf[i])

return dbconf

return {}

def usage(dbdesc):

dbdesc = sorted(dbdesc.items(), key=lambda x : x[0])

info('dbconf列表:')

for name, desc in dbdesc:

info('%20s: %s' %(name,desc))

def main():

dbmap, dbdesc = init(dbconf)

dbmap.update(initusermap())

if len(sys.argv) < 2:

usage(dbdesc)

return

else:

db = sys.argv[1]

params = ' '.join(sys.argv[2:])

if not db in dbmap and db.endswith('.rw') and db[:-3] in dbmap:

db = db[:-3]

warning('use %s instead' % db)

if db in dbmap:

cmd = 'mysql -A -U -u%(user)s -p%(password)s -h%(host)s -P%(port)s %(db)s ' % dbmap[db]

info(cmd)

os.system(cmd + params)

else:

warning('%s not found' % db)

if __name__ == '__main__':

main()

文件dbconf.py

#!/usr/bin/python

#coding=utf-8

dbconf = [

# mart_finance

{'url': 'mysql://username:"password"@ip:port/dbname',

'name': ['dbname'],

'desc':'xxx数据库'

},

]

ln -s /Users/wanglin/script/db /usr/local/bin/db

即可 命令行 db dbname快速连接mysql

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2018-02-24 12:18

浏览 300

分类:互联网

评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值