你真的会用python写mongodb的URI吗?

python好的地方就是容易上手,这也是为什么现在那么多人都会点python的原因。但是你要把这个python写好吧,还真得花点功夫,比如今天咱要说的这个URI吧?大家都知道,模仿官方文档给的,copy一份,改几个参数就好了。但是你有没有想过,如果是这样的话,岂不是hard code了?那又有人会说了,写成配置文件不就好了么?这也是一个方法。今天小胖要给大家推荐的呢,是一种用于生产环境,用系统变量去规避hard code的方法。

import os
import re

# 这段正则就是要能够正确的匹配所有的mongodb uri
r = r'^mongodb\:\/\/(?P<username>[_\w]+):(?P<password>[\w]+)@(?P<host>[\.\w]+):(?P<port>\d+)/(?P<database>[_\w]+)$'
# python的正则表达式,预编译,加速字符串匹配
regex = re.compile(r)
# 通过在centos(或者ubuntu)中设置的系统变量来控制
mongolab_url = os.environ['MONGOLAB_URI']
match = regex.search(mongolab_url)
# groupdict可以将正则表达式中的命名捕获的关键字和捕获来的值变成k-v对
data = match.groupdict()

# 将mongodb uri 进行解析
MONGO_HOST = data['host']
MONGO_PORT = int(data['port'])
MONGO_NAME = data['username']
MONGO_DATABASE = data['database']
MONGO_PASSWORD = data['password']

# 有如上的操作后,之后就是顺理成章的动态uri了
from mongoengine import connect as me_connect
me_connect(
    data['database'], 
    host=data['host'], 
    port=int(data['port']), 
    username=data['username'], 
    password=data['password'])

好了,同样的方法也适用于MySQL、Redis、Oracle啦。聪明的你不妨试试,说不定同事们对你惊呼一声:“哎哟~还不错哦~” 如果你对今天的内容还感兴趣的话,何不点个赞再走呢?如果感兴趣到想赞赏我,就不要犹豫啦~


原文发布于微信公众号 - 猿媛牧场(xpchuiit)

原文发表时间:2018-06-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据和云

监控工具:Oracle 12c Cluster Health Monitor 详解

? 戴明明(Dave) Oracle ACE-A,ACOUG核心成员,宝存科技数据库方案架构师 Dave也是CSDN 认证专家,超过7年的DBA经验,擅长O...

3539
来自专栏电光石火

FastDFS V5.12分布式文件系统介绍

最近要用到fastDFS,所以自己研究了一下,在搭建FastDFS的过程中遇到过很多的问题,为了能帮忙到以后搭建FastDFS的同学,少走弯路,与大家分享一...

842
来自专栏杨建荣的学习笔记

使用pt工具检测MySQL主从延迟(r12笔记第7天)

今天翻看了下《高性能MySQL》,真是让人拍手称绝,里面的很多实战思路非常不错,各种问题分析如数家珍,如果是有一定基础的同学,看起来会非常不错。 当然里...

3426
来自专栏JAVA同学会

初试spring-session

  它将取代容器中的HttpSession。在没有容器会话集群方案的情况下,使得支持会话集群微不足道。

602
来自专栏Play & Scala 技术分享

Scala Macro 现状介绍

3325
来自专栏FreeBuf

干货 | 如何用Solr搭建大数据查询平台

? 0x00 开头照例扯淡 自从各种脱裤门事件开始层出不穷,在下就学乖了,各个地方的密码全都改成不一样的,重要帐号的密码定期更换,生怕被人社出祖宗十八代的我,...

4257
来自专栏Android's Track

当我们按下电源键,Android 究竟做了些什么?

我们会否好奇过,如此复杂的 Android 究竟是怎么运作起来的呢?

34510
来自专栏技巅

linux内核崩溃问题排查过程总结

1544
来自专栏SAP最佳业务实践

SAP最佳业务实践:ETO–项目装配(240)-8给作业分配技术文档

image.png CJ20N给作业分配技术文档 为帮助雇员操作,可以将保存在文档管理系统中的文档分配给WBS元素和作业。在这个操作中,会将一份技术图纸分配给一...

36710
来自专栏前端侠2.0

oracle数据链接无效以及chrome浏览器input最大长度的问题

1、本地数据库是oracle10.0.2.1  .年前总部数据库升级为oracle11,原来的 数据链接变得不可用了。提示:

662

扫码关注云+社区