Python中点引用运算符中的Access环境变量值

Python中点引用运算符中的Access环境变量值,python,Python,我有一个MongoDB数据库,其中包含以下详细信息: 数据库名称:myFirstDB也存储在环境变量DB\u name 集合名称:myFirstCollection也存储在环境变量DB_COLLEC 我有以下python代码: db=get\u db()其中get\u db()返回pyMongo客户端连接 我想创建一个集合对象,如下所示: users=db.(os.environ.get('db\u NAME'))(os.environ.get('db\u colec')) 但这总是返回语法错误

我有一个MongoDB数据库,其中包含以下详细信息:

数据库名称:
myFirstDB
也存储在环境变量
DB\u name

集合名称:
myFirstCollection
也存储在环境变量
DB_COLLEC

我有以下python代码:

db=get\u db()
其中get\u db()返回pyMongo客户端连接

我想创建一个集合对象,如下所示:
users=db.(os.environ.get('db\u NAME'))(os.environ.get('db\u colec'))

但这总是返回语法错误

使用env变量和引用运算符的替代方法是什么

编辑:更新以获取更多详细信息。

def get_db():
    if 'db' not in g:
        g.db = MongoClient(os.environ.get('DB_URI'), ssl_cert_reqs=ssl.CERT_NONE)
    return g.db

我想在上面一行中使用环境变量。同一行在其他函数中重复。如果我想更改数据库名称或集合,我必须在多个地方对更改进行硬编码。因此env变量将尝试使用。

我的代码如下所示

import os
import pymongo


def get_db():
    return pymongo.MongoClient(os.getenv('DB_URI'))

def get_collection(db_name, coll_name):
    db_connect = get_db()
    return db_connect[db_name][coll_name]

def register():
    if request.method == 'POST':
        username = request.form['username']
        password = request.form['password']

        ### Below Line ###
        users = get_collection(os.getenv('DB_NAME'), os.getenv('DB_COLLEC'))
        ### Above Line ###

        error = None
        if not username:
            error = 'Username is required.'
        elif not password:
            error = 'Password is required.'
        existing_user = users.find_one({'name' : request.form['username']})
       // rest of the code
.
.
.

您可以使用内置函数。它返回对象<代码>对象<代码>的属性<代码>名称<代码>,如果向其传递一个可选的<代码>默认值<代码>值,则在<代码>对象<代码>没有属性<代码>名称<代码>的情况下,返回该值而不是引发<代码>属性错误<代码>。您标记的行可能如下所示:

users=getattr(getattr(db,os.environ.get('db\u NAME')),os.environ.get('db\u colec'))
或作为多用户:

db\u name=getattr(db,os.environ.get('db\u name'))
collect\u name=getattr(db\u name,os.environ.get('db\u COLLEC'))
而不是:

users = db.myFirstDBname.myFirstCollection
尝试:


这似乎不起作用:(好的..你的环境变量在哪里?错误是什么?这有点模糊。我得到“TypeError:name必须是str的一个实例”。将用更多信息更新问题。请在读取环境变量后尝试打印值…如果你没有提到,还可以输入你得到的错误是什么
users = db.myFirstDBname.myFirstCollection
users = db[myFirstDBname].myFirstCollection