专栏首页Python专栏你真的会用python写mongodb的URI吗?

你真的会用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)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 无所不能的Python,这次把手机APP也攻占了

    用户1634449
  • Python | 一道神奇的Python面试题,你会吗?

    怀疑了人生半天,本来还想黑,WTF Python…然后才想通是自己太生疏......

    用户1634449
  • 对不起,让大家久等了,RETURNS!

    前段时间一直在忙项目,所以公众号懈怠了。自己也很纠结,要不要继续做,每天就是转发,我记得有2-3周了吧,就写了几篇原创。

    用户1634449
  • 微信公众号链接小程序HTML代码

    似水的流年
  • Python算法题----列表去重

    有这样一个列表[1, 1, 1, 2, 3, 3, 2, 4, 3, 4, 5, 5, 5, 6, 7, 8, 9, 9, 9, 9, 10, 10], 写一个...

    py3study
  • [半zz]迅雷笔试题

    用户1130771
  • 工业数据分析之数据归一化 | 冰水数据智能专题 | 2nd

    归一化就是要把需要处理的数据经过处理后(通过某种算法)限制在你需要的一定范围内。首先归一化是为了后面数据处理的方便,其次是保证程序运行时收敛加快...

    用户7623498
  • go实现利用最大堆寻找最小k个数

    昨天分享了寻找最小k个数的算法是,那么有没有更为迅速的方法呢?今天就来分享关于如何使用最大堆进行解决。

    陌无崖
  • 利用Phaser开发微信小游戏(排行榜小结)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明...

    bering
  • 使用脚手架应用做单元测试

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    Jerry Wang

扫码关注云+社区

领取腾讯云代金券