Configuration

PyMongo 直接支持如下的配置项:

MONGO_URI一个 MongoDB 网址 用于其他配置项。
MONGO_HOST你的 MongoDB 服务器的主机名或者 IP 地址。 默认:”localhost”。
MONGO_PORT你的 MongoDB 服务器的端口。默认:27017。
MONGO_AUTO_START_REQUEST为了禁用 PyMongo 2.2 的 “auto start request” 行为, 设置成 False。 (请见 MongoClient)。 默认:True
MONGO_MAX_POOL_SIZE(可选): PyMongo 连接池中保持空闲连接的最大数量。 默认:PyMongo 默认值。
MONGO_SOCKET_TIMEOUT_MS(可选): (整型) 在超时前套接字允许一个发送或者接收的耗时(毫秒)。 默认: PyMongo 默认值。
MONGO_CONNECT_TIMEOUT_MS(可选): (整型) 在超时前允许一个连接的耗时(毫秒)。 默认: PyMongo 默认值。
MONGO_DBNAME可用于作为 db 属性的数据库名。默认: app.name
MONGO_USERNAME用于认证的用户名。默认:None
MONGO_PASSWORD用于认证的密码。默认:None
MONGO_REPLICA_SET设置成连接的备份集的名称; 这必须匹配到备份集的内部名,由 http://www.mongodb.org/display/DOCS/Replica+Set+Commands#ReplicaSetCommands-isMaster 命令)决定的。默认:None
MONGO_READ_PREFERENCE决定如何读取路由到备份集的成员。 必须是定义在 pymongo.read_preferences.ReadPreference 中的一个常量 或者一个字符串名称。
MONGO_DOCUMENT_CLASS告诉 pymongo 返回定制的对象而不是默认的字典, 比如 bson.son.SON。 默认: dict

PyMongo 或者 init_app() 仅仅只有一个参数调用的时候 (the Flask 实例),会假设配置值的前缀是 MONGO;能够用 config_prefix 来覆盖这个前缀。

这个技术能够用于连接多个数据库或者数据服务器:

  1. app = Flask(__name__)
  2. # connect to MongoDB with the defaults
  3. mongo1 = PyMongo(app)
  4. # connect to another MongoDB database on the same host
  5. app.config['MONGO2_DBNAME'] = 'dbname_two'
  6. mongo2 = PyMongo(app, config_prefix='MONGO2')
  7. # connect to another MongoDB server altogether
  8. app.config['MONGO3_HOST'] = 'another.host.example.com'
  9. app.config['MONGO3_PORT'] = 27017
  10. app.config['MONGO3_DBNAME'] = 'dbname_three'
  11. mongo3 = PyMongo(app, config_prefix='MONGO3')

你应该需要注意一些自动配置的设置:

tz_aware:

Flask-PyMongo 一直使用通用时区的 datetime 对象。这是因为当建立连接的时候它设置 tz_aware 参数为 True。从 MongoDB 返回的 datetime 对象一直是 UTC。

safe:

Flask-PyMongo 默认地设置成 “safe” 模式,这会导致 save(), insert(), update(), 和 remove() 在返回前一直等待着服务器的应答。你可以在调用的时候通过传入 safe=False 参数到任何一个受影响的方法中来覆盖它。