我为什么会开发这个模块? 在java下很多数据的连接方式都是直接用uri的方式,但是在pyhton下反而少之又少,虽然各个python数据库模块支持这个。
我在社区问过不少python的大牛,他们对于数据库连接地址有不同的规范,有人喜欢直接用 db_host=xxx \n db_port=3306来表示,也有人跟我一样是用uri的方式来表示。 但虽然同样是用uri来表示数据库地址,不同的是我在uri层赋予了更多的东西,比如解析拆解uri配置,扩展字段。然而朋友的用法是直接从yaml取出来,然后扔给python下数据库驱动来处理。 如果你的项目要连接各种db和api接口的话,那么你特别的适合用dburi 。这样你的python 配置文件会显得很整洁。
关于数据库uri解析的文章,原文地址是 http://xiaorui.cc/?p=1951
项目名字: dburi
github地址: https://github.com/rfyiamcool/dburi
pypi地址 : https://pypi.python.org/pypi/dburi/3.1
可能有些朋友还不知道什么是uri ?
简单说uri是配置地址的一种表达方式,可以在一行里详细的描述出 主机地址,端口,user,passwd,database,tablename,other field
最起开始是想在python社区里淘淘,结果没发现能用的database uri解析模块,就自己搞了一个。
new version :
解决了dburi兼容python 2.6 3.x的问题
增加了常见数据库的端口补充
增加了ini配置文件的解析
dburi的安装 (最近往pypi推送了不少模块,有兴趣的朋友可以look look)
pypi安装 pip install dburi 源码安装 git clone git@github.com:rfyiamcool/dburi.git cd dburi python setup.py install下面是dburi的使用方法
mysql://xiaorui:123@localhost/xiaorui_master?option=open&charset=utf8&table=test’
mysql标示位表明是哪个数据库 xiaorui:123 表明的是账号和密码 @localhost 表明的是数据库HOST地址 /xiaorui_master 表明的是数据库名字 ?k=v&k=v 这堆传参是作为扩展字段使用的我们开始测试, 端口可以不填写,但是数据库要写全称
from dburi import parse_db_str print parse_db_str('mysql://xiaorui:123@localhost/xiaorui_master?option=open&charset=utf8&table=test') print parse_db_str('mysql://xiaorui:123@localhost/xiaorui_master') print parse_db_str("mongo://127.0.0.1:27017/xiaorui_master") print parse_db_str('redis://127.0.0.1:6379') print parse_db_str('elasticsearch://127.0.0.1:9200') print parse_db_str('hbase://127.0.0.1:9090/xiaorui') print parse_db_str('memcached://127.0.0.1:11211')Result 结果
{'name': 'mysql', 'extra': 'option=open&charset=utf8&table=test', 'passwd': '123', 'charset': 'utf8', 'db': 'xiaorui_master', 'host': 'localhost', 'user': 'xiaorui', 'table': 'test', 'port': 3306, 'option': 'open'} {'name': 'mysql', 'passwd': '123', 'db': 'xiaorui_master', 'host': 'localhost', 'user': 'xiaorui', 'port': 3306} {'host': '127.0.0.1', 'db': 'xiaorui_master', 'name': 'mongo', 'port': 27017} {'host': '127.0.0.1', 'name': 'redis', 'port': 6379} {'host': '127.0.0.1', 'name': 'elasticsearch', 'port': 9200} {'host': '127.0.0.1', 'db': 'xiaorui', 'name': 'hbase', 'port': 9090} {'host': '127.0.0.1', 'name': 'memcached', 'port': 11211}
总结,database uri的配置模式,最少看起来会酷酷的。虽然很推荐你用这模块,但我个人还是推荐那些项目中db连接过多的人使用。