- Notifications
You must be signed in to change notification settings - Fork2
TODO is a simple web application that introduces you to the power, performance, and simplicity of MariaDB. The TODO app contains a React.js front-end and Python back-end, which utilizes the MariaDB Python connector and the SQLAlcemy object-relational mapping toolkit.
License
mariadb-developers/todo-app-python-sqlalchemy
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
TODO is a web application that introduces you to the power, performance, and simplicity ofMariaDB.
This project uses theMariaDB Python connector in combination with theSQLAlchemy (SQL and object-relational mapping toolkit) to connect to and communicate to a MariaDB database instance.
This application is made of two parts:
- Client
- web UI that communicates with REST endpoints available through an API app (see below).
- is a React.js project located in theclient folder.
- API
- uses theMariaDB Python Connector withSQLAlchemy to connect to MariaDB.
- is a Python project located in theapi folder.
This README will walk you through the steps for getting theTODO
web application up and running using MariaDB.
- Requirements
- Getting started with MariaDB
- Get the code
- Create the database and table
- Configure, build and run the apps
- Support and contribution
- License
This sample application requires the following to be installed/enabled on your machine:
- Python (v. 3+)
- MariaDB Connector/C (v. 3.1.5+) (used by Connector/Python)
- Node.js (v. 12+) (for the Client/UI app)
- NPM (v. 6+) (for the Client/UI app)
- MariaDB command-line client (optional), used to connect to MariaDB database instances.
MariaDB is a community-developed, commercially supported relational database management system, and the database you'll be using for this application.
If you don't have a MariaDB database up and running you can find more information on how to download, install and start using a MariaDB database in theMariaDB Quickstart Guide.
First, usegit (through CLI or a client) to retrieve the code usinggit clone
:
$ git clone https://github.com/mariadb-developers/todo-app-python-sqlalchemy.git
Next, because this repo uses agit submodule, you will need to pull theclient application using:
$ git submodule update --init --recursive
Connect to your MariaDB database (fromStep #2) and execute the following SQL scripts using the following options:
a.) Use theMariaDB command-line client to execute the SQL contained withinschema.sql.
Example command:
$ mariadb --host HOST_ADDRESS --port PORT_NO --user USER --password PASSWORD< schema.sql
OR
b.) Copy, paste and execute the raw SQL commands contained inschema.sql using aclient of your choice.
CREATEDATABASEtodo;CREATETABLEtodo.tasks ( idINT(11) unsignedNOT NULL AUTO_INCREMENT, descriptionVARCHAR(500)NOT NULL, completedBOOLEANNOT NULL DEFAULT0,PRIMARY KEY (id));
This application is made of two parts:
- Client
- web UI that communicates with REST endpoints available through an API app (see below).
- is a React.js project located in theclient (/src/client) folder.
- API
- uses theMariaDB Python Connector withSQLAlchemy to connect to MariaDB.
- is a Python project located in theapi folder.
The following steps,a
throughe
, will walk you through the process of configuring, building and running theapi
andclient
applications.
Configure the MariaDB connection by adding an.env file to the project within the root folder.
Example implementation:
DB_HOST=<host_address>DB_PORT=<port_number>DB_USER=<username>DB_PASS=<password>DB_NAME=todo
Configuring the connection
The environmental variables from.env
are used withintasks.py to confire theSQLAlchemy connection engine :
engine=sqlalchemy.create_engine("mariadb+mariadbconnector://{0}:{1}@{2}:{3}/{4}".format(os.getenv("DB_USER"),os.getenv("DB_PASS"),os.getenv("DB_HOST"),os.getenv("DB_PORT"),os.getenv("DB_NAME")),echo=True)
Configuring .env and tasks.py for the MariaDB cloud database serviceSkySQL
Note: MariaDB SkySQL requires SSL additions to connection. Details coming soon!
A virtual environment is a directory tree which contains Python executable files and other files which indicate that it is a virtual environment. Basically, it's the backbone for running your Python Flask app.
Creation ofvirtual environments is done by executing the following command (within/src/api):
$ python3 -m venv venv
Tip: Tip: pyvenv is only available in Python 3.4 or later. For older versions please use thevirtualenv tool.
Before you can start installing or using packages in your virtual environment, you’ll need to activate it. Activating a virtual environment will put the virtual environment-specific python and pip executables into your shell’s PATH.
Activate the virtual environment using the following command (within/src/api):
$. venv/bin/activate activate
Flask is a micro web framework written in Python. It is classified as amicroframework because it does not require particular tools or libraries.
TL;DR It's what this app uses for the API.
This app also uses the MariaDB Python Connector to connect to and communicate with MariaDB databases.
Install the necessary packages by executing the following command (within/src/api):
$ pip3 install flask mariadb python-dotenv SQLAlchemy
d.) Build and run theAPI app
Once you've pulled down the code and have verified that all of the required packages are installed you're ready to run the application!
From/src/api execute the following CLI command to start the the Python project:
$ python3 api.py
Note: You will need to use seperate terminals for theclient
andapi
apps.
e.) Build and run theUI (Client) app
Once the API project is running you can now communicate with the exposed endpoints directly (via HTTP requests) or with the application UI, which is contained with theclient
folder of this repo.
To start theclient
application follow the instructionshere.
Please feel free to submit PR's, issues or requests to this project project directly.
If you have any other questions, comments, or looking for more information on MariaDB please check out:
Or reach out to us diretly via:
About
TODO is a simple web application that introduces you to the power, performance, and simplicity of MariaDB. The TODO app contains a React.js front-end and Python back-end, which utilizes the MariaDB Python connector and the SQLAlcemy object-relational mapping toolkit.
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Releases
Packages0
Uh oh!
There was an error while loading.Please reload this page.