你真的会用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 条评论
登录 后参与评论

相关文章

来自专栏腾讯NEXT学位

提升代码可读性的 10 个技巧

3616
来自专栏Python研发

设计模式 -- 常用设计模式

                                  ——可复用面向对象软件的基础

2441
来自专栏机器学习算法与Python学习

python初学者的建议

Python是一种非常富有表现力的语言。它为我们提供了一个庞大的标准库和许多内置模块,帮助我们快速完成工作。然而,许多人可能会迷失在它提供的功能中,不能充分利用...

42312
来自专栏进击的程序猿

The Clean Architecture in PHP 读书笔记(二)

设计模式是对软件中通用问题的总结,有了设计模式,方便我们进行交流,譬如一说MVC,我们就知道是怎么回事了,不然我们必须巴拉巴拉一大堆话去描述,不易于传播、交流,...

744
来自专栏后端技术探索

php进阶

基本数据类型和数组都为真复制,即为真副本,当属性为对象时,为假复制,改变副本仍会影响原对象.解决方案:

1161
来自专栏码匠的流水账

聊聊storm TridentBoltExecutor的finishBatch方法

本文主要研究一下storm TridentBoltExecutor的finishBatch方法

904
来自专栏码匠的流水账

聊聊storm TridentBoltExecutor的finishBatch方法

本文主要研究一下storm TridentBoltExecutor的finishBatch方法

672
来自专栏牛客网

51信用卡前端凉面

1590
来自专栏熊二哥

.NET工作准备--01前言

01应聘须知(已过时) -1.了解软件开发大环境。 -2.准备简历:不宜超过一页,永远准备中文,模板。 -3.渠道:3大网站,中华英才,前程无忧(51job最...

2048
来自专栏游戏开发那些事

【Unity游戏开发】Lua中的os.date和os.time函数

  最近马三在工作中经常使用到了lua 中的 os.date( ) 和 os.time( )函数,不过使用的时候都是不得其解,一般都是看项目里面怎么用,然后我就...

1274

扫码关注云+社区