首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >你真的会用python写mongodb的URI吗?

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

作者头像
用户1634449
发布2018-06-29 12:24:51
6880
发布2018-06-29 12:24:51
举报
文章被收录于专栏:Python专栏Python专栏

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啦。聪明的你不妨试试,说不定同事们对你惊呼一声:“哎哟~还不错哦~” 如果你对今天的内容还感兴趣的话,何不点个赞再走呢?如果感兴趣到想赞赏我,就不要犹豫啦~


本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-06-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 猿媛牧场 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MongoDB
腾讯云数据库 MongoDB(TencentDB for MongoDB)是腾讯云基于全球广受欢迎的 MongoDB 打造的高性能 NoSQL 数据库,100%完全兼容 MongoDB 协议,支持跨文档事务,提供稳定丰富的监控管理,弹性可扩展、自动容灾,适用于文档型数据库场景,您无需自建灾备体系及控制管理系统。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档