Skip to main content

Simple and ready to grow template. Understand Flask SQLAlchemy basics, with examples. Uses Blueprints and application factory. Avoid circular imports.

Project description

Flask-SQLAlchemy-Project-Template

Ready to use template to understand Flask SQLAlchemy basic implementation, with examples. With Flask Blueprints and application factory. Avoids circular imports.

Minimalistic code and folder structure in the package.

Introduction

Many tutorials on this topic are either old and non-working or complex. SQLAlchemy is an Object Relational Mapper (ORM). You can work with Python class attributes instead of raw SQL statements.

How to create the SQLite Database?

Flask-SQLAlchemy can create the whole database file, tables and schema from your Python class definition. The SQLALCHEMY_DATABASE_URI is used to create the database in the correct location with the given name.

models.py :

class Users(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String, unique=True, nullable=False)
    email = db.Column(db.String, unique=True, nullable=False)
    profile = db.Column(db.String, unique=False, nullable=False)

__ init __.py :

this_dir = path.abspath(path.join(path.dirname("__file__")))
db_path = path.join(this_dir, 'database.db')

def create_app():
    ...
    app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///" + db_path
    db.init_app(app)  
    ...

def setup_database(flask_app):
    with flask_app.app_context():
    # alchemy creates the db from SQLALCHEMY_DATABASE_URI and models.py classes
    db.create_all()

That's it!

Flask documentation says, that db.init_app(app) MUST be there, if application factory style is used.

important Imports

database.py :

from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()

models.py :

from .database import db

__ init __.py :

from .database import db

def create_app():
    # flask initializes Alchemy with the application
    db.init_app(app)

/routes_users/routes_support.py :

     from Flask_SQLAlchemy_Project_Template.database import db
     from Flask_SQLAlchemy_Project_Template.models import Users

trip wires

Install flask-sqlalchemy and python interpreter into venv via pycharm file,settings,project,interpreter if it will not take place via the IDE window.

Circular import dilemma. Flask-SQLAlchemy is a candidate for hours of research and frustration.

tips

Flask-sqlalchemy is dependent of the current context in the app. This will not show up in one file mini setups. For bigger Flask apps, with multiple modules, it is obviously necessary to work with route(s) and blueprints. This package also uses flask application factory. This is flask as a function ( def create_app(): ).

run

$ pip3 install Flask_SQLAlchemy_Project_Template
$ python3 -m Flask_SQLAlchemy_Project_Template

location

$ pip3 show Flask_SQLAlchemy_Project_Template

GitHub package

Just for the sake of my art. Not really useful, since you had to open the image to get the directory structure.

sudo docker run -v $(pwd):/alchemy -it --network host ghcr.io/44xtc44/flask_sqlalchemy_project_template:latest

Connects your current dir with the docker image /alchemy dir. The app must write the database.

Cheers

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

Flask_SQLAlchemy_Project_Template-1.5.tar.gz (10.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file Flask_SQLAlchemy_Project_Template-1.5.tar.gz.

File metadata

  • Download URL: Flask_SQLAlchemy_Project_Template-1.5.tar.gz
  • Upload date:
  • Size: 10.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.3

File hashes

Hashes for Flask_SQLAlchemy_Project_Template-1.5.tar.gz
Algorithm Hash digest
SHA256 ddd15a8a2af371aff9e5037ff2d45a5894059f2540bc7351abf2cb8db7fc7dea
MD5 999664834abfd7f8a56017cf1a0445f6
BLAKE2b-256 aaf55b3beb4d3a37df5595600ae026f202be4229ba25780522bca95a82c0d207

See more details on using hashes here.

File details

Details for the file Flask_SQLAlchemy_Project_Template-1.5-py3-none-any.whl.

File metadata

  • Download URL: Flask_SQLAlchemy_Project_Template-1.5-py3-none-any.whl
  • Upload date:
  • Size: 16.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.3

File hashes

Hashes for Flask_SQLAlchemy_Project_Template-1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 023e9d7e32d56ecb2b0b7234073acd2ab25e8c9f9eacbed5555fbf7ef0733ebb
MD5 894c922cd1ee47a7faa2e86c449ff905
BLAKE2b-256 6b27aad6b7b8012c9a8d7288251ea2e3a8d822dd19c4d9377b667ecc71fb3ce3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page