Get It Done! Part 2: Database Configuration
Important Note:
This series of videos uses MAMP
, PHPMyAdmin
, and MySQL
. WE ARE NOT USING THESE TOOLS. Instead we are using TablePlus
and Sqlite3
.
The code examples below ARE slightly different from the code in the video
Each difference is marked with a DIFFERENT CODE ALERT
marker
Notes
If you don't already have flask-env
activated, activate it now. Then run:
conda install -c conda-forge flask-sqlalchemy
If instead you are using pipenv
you may run:
pipenv install flask-sqlalchemy
Or if you prefer installing the dependency globally:
pip install flask-sqlalchemy
After this installation completes, amend your main.py
by adding the following six lines:
DIFFERENT CODE ALERT
import os
from flask_sqlalchemy import SQLAlchemy
DIFFERENT CODE ALERT
project_dir = os.path.dirname(os.path.abspath(__file__))
app.config['SQLALCHEMY_DATABASE_URI'] = "sqlite:///{}".format(os.path.join(project_dir, "get-it-done.db"))
app.config['SQLALCHEMY_ECHO'] = True
db = SQLAlchemy(app)
Next we'll continue modifying main.py
and create a persistent class for database data:
class Task(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(120))
def __init__(self, name):
self.name = name
Be sure to shield app.run
by enclosing it in an if
condition:
if __name__ == '__main__':
app.run()
Back in the terminal, start a python shell by running the command python
(or python3
depending on your installation). Then import db
and create the tables:
> from main import db,Task
> db.create_all()
Now run the following commands one at a time to add data to the database:
>>> new_task = Task('finish ORM lesson 2')
>>> db.session.add(new_task)
>>> another_task = Task('post lesson video')
>>> db.session.add(another_task)
>>> db.session.commit()
To get data from the database, run the following:
>>> tasks = Task.query.all()
>>> tasks[0].name
Code
View the final code for this lesson.