MongoDB for Developers with Python Transcripts
Chapter: Mapping classes to MongoDB with the ODM MongoEngine
Lecture: Concept: Registering connections
0:00 One of the very first things if not the first thing
0:03 that we need to do is register our connections.
0:05 So it's really straightforward, we just import MongoEngine
0:08 and then we call register connection,
0:11 and you want to give this connection an alias or set it as the default,
0:14 and then we're going to set the name equal to the name of the database.
0:18 Here we're calling this one core, I like to be very explicit and say
0:22 everywhere that you are working with a connection or a database really
0:26 you name that explicitly in your code
0:29 as we'll see later when we get to the classes.
0:31 So we register connection, and we set the alias to core,
0:35 and the db we're going to say name = dealership.
0:38 Now, this worked well if you're just connecting on local host
0:41 no authentication, default port all that, right
0:44 we just let everything else fall through the cracks.
0:46 When we get to the production deployment,
0:49 well that's not really going to fly anymore, we're going to need ssl,
0:52 we're going to need to enable authentication
0:54 and pass credentials and all that kind of stuff,
0:56 so we can use a more complicated variation here,
1:00 where we do basically the same thing, but we create this dictionary
1:03 that has the additional elements, now it doesn't have to be a separate dictionary
1:07 you could just set them explicitly, but it turns out that sometimes
1:10 if you want to like put this into your log or things like this, it's kind of handy,
1:14 so we're going to basically set a username, password, host, port,
1:17 authentication source is almost always admin, not always,
1:21 it's either the database you're working with if it's a local user
1:24 or if it's a server wide user you're using to be on admin
1:27 authentication mechanism is scram-shah-1,
1:30 or you can change it that's the default and ssl is true,
1:33 and in this case, we might be using a self signed certificate
1:37 which is totally good for the encryption, but it's going to fail
1:40 and say we don't trust the certificate, if we trust the server
1:43 you can go with ssl cert requires none,
1:47 or if you want to make sure you have one, trust its certificate, omit the last line.
1:50 And then we just use **data basically to pass those
1:53 as keyword arguments to register connection
1:56 and notice, each step I'm saying get the user from config or environment
2:00 so this could be in a web app where these values are stored in the config file,
2:04 you don't want to put them in source specifically
2:07 you don't want them checked in anywhere ever,
2:09 you could say get them from, you can put them in environment variables
2:12 on your server and then grab them at runtime
2:14 out of the environment and set them here.