开源项目之使用dburi解析uri形式的数据库地址

我为什么会开发这个模块? 在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连接过多的人使用。



		        

大家觉得文章对你有些作用! 如果想赏钱,可以用微信扫描下面的二维码,感谢!
另外再次标注博客原地址  xiaorui.cc

发表评论

邮箱地址不会被公开。 必填项已用*标注