Python-powered Chat Apps with Twilio and SendGrid Transcripts
Chapter: Using our database with the SQLAlchemy ORM
Lecture: SQLAlchemy session and unit of work pattern
Login or
purchase this course
to watch this video and the rest of the course contents.
0:00
The final thing to use these SQLAlchemy classes is to go through a couple of steps, create what's called an engine,
0:07
which takes a connection string. Use that to work with our SQLAlchemy Base, to bind them together.
0:13
Use the SQLAlchemy base to create the database and the tables and all those sorts
0:18
of things. This is exactly the same for every single SQLAlchemy Project you ever work on the We have a little nicer version to work with.
0:26
Let me just paste file in here that we're going to just talk about. I'm going to call it session.
0:31
Now it's going to have a single function that we call it Apps Startup, where we specify basically the connection string. We're going to use SQLlite.
0:38
You can use any database you want. POSTGRES, SQL Server, My SQL Any relational database almost is supported by SQLAlchemy,
0:47
but I don't want to have to have you set up a separate database server and
0:51
have the connection, the network connections and permissions and all that stuff lined up just right. We're going to use SQLLite,
0:57
which is a local file based database built into Python so there's nothing to run and nothing to install. So here's what we're gonna do.
1:06
Make sure we've set it up once. Make sure that we have a database file. That's the connection string for SQLAlchemy specified.
1:14
We're going to make sure the path exists, and we're gonna use pathlib to say, basically, if it doesn't exist,
1:20
create the folder structure that has been passed in, before we try to save a file Their SQLLite, will create the file,
1:26
but it won't create the parent directory structure required to save that. But then we've got our connection string.
1:32
We're specifying some connection settings here, like we're going to create this thing called the Engine
1:37
This is the thing that actually talks to the various database implementations with the connection
1:42
string, you want to see the messages are SQLexchange with the database you could set
1:48
echoed a True and we're going to say we don't care about which the red stuff
1:51
is running on and they're going to create this thing called Factory. Factory is what creates
1:56
a session or a unit of work and the design pattern nomenclature. That's the thing that we're going to use each time we want to make some database
2:05
operations. We're gonna use this factory to create a session and then do all then do other work and then commit or not commit that session.
2:12
Now one of the things we have to do for SQLAlchemy to work is we have to make sure it's seen everything that derives from SQLAlchemy base.
2:21
So I'm going to come up with this little idea here of saying what we're going to do is create a single file here called this.
2:30
And in this we'll just say from db import And let's just put the things we need to put order and we're going to import user.
2:39
If we had another option, another class, we would put it here as well. Now, sometimes some tools will take this away,
2:46
especially PyCharm under certain settings. So I'm going to tell it, you know these, even though they look like they're not used this time,
2:52
this matters. What this effectively does is it loads this file and make sure that this statement is executed before we do what's next in the session.
3:01
While okay, so just that's just necessary for to actually create the tables and then over here, where it's going to go to SQLAlchemy base and say,
3:09
create all tables using this engine or this connection. Then, whenever we want to talk to the database,
3:15
we'll just call either create session or will create one of these session context things if we want to use it within a with block,
3:21
which I think is a little bit cleaner. But either way, you could use this one or this one to talk to the database.