34
loading...
This website collects cookies to deliver better user experience
SECRET_KEY = "abcdefgh"
FLASK_APP = run.py
FLASK_ENV= development # production/development
# Define the database
# Flask-SQLAlchemy
SQLALCHEMY_DATABASE_URI = "mysql+mysqlconnector://DB_USERNAME:[email protected]:3306/DB_DATABASE"
SQLALCHEMY_TRACK_MODIFICATIONS = False
# Static Assets
STATIC_FOLDER_PATH = "/assets"
STATIC_FOLDER = "assets"
TEMPLATES_FOLDER = "views"
UPLOAD_FOLDER = "application/assets/uploads"
import os
from os import environ
class Config:
# General Config
SECRET_KEY = environ.get('SECRET_KEY')
FLASK_APP = environ.get('FLASK_APP')
FLASK_ENV = environ.get('FLASK_ENV')
BASE_DIR = os.path.abspath(os.path.dirname(__file__))
# Static Assets
STATIC_FOLDER_PATH = environ.get('STATIC_FOLDER_PATH')
STATIC_FOLDER = environ.get('STATIC_FOLDER')
TEMPLATES_FOLDER = environ.get('TEMPLATES_FOLDER')
UPLOAD_FOLDER = environ.get('UPLOAD_FOLDER')
# Flask-SQLAlchemy
SQLALCHEMY_DATABASE_URI = environ.get('SQLALCHEMY_DATABASE_URI')
SQLALCHEMY_TRACK_MODIFICATIONS = bool(environ.get('SQLALCHEMY_TRACK_MODIFICATIONS'))
from dotenv import load_dotenv
from flask_migrate import Migrate
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy import MetaData
load_dotenv()
convention = {
"ix": 'ix_%(column_0_label)s',
"uq": "uq_%(table_name)s_%(column_0_name)s",
"ck": "ck_%(table_name)s_%(column_0_name)s",
"fk": "fk_%(table_name)s_%(column_0_name)s_%(referred_table_name)s",
"pk": "pk_%(table_name)s"
}
metadata = MetaData(naming_convention=convention)
db = SQLAlchemy(metadata=metadata)
migrate = Migrate()
from dotenv import load_dotenv
from flask_migrate import Migrate
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy import MetaData
from flask_debugtoolbar import DebugToolbarExtension
load_dotenv()
convention = {
"ix": 'ix_%(column_0_label)s',
"uq": "uq_%(table_name)s_%(column_0_name)s",
"ck": "ck_%(table_name)s_%(column_0_name)s",
"fk": "fk_%(table_name)s_%(column_0_name)s_%(referred_table_name)s",
"pk": "pk_%(table_name)s"
}
metadata = MetaData(naming_convention=convention)
db = SQLAlchemy(metadata=metadata)
migrate = Migrate()
from flask import Flask
import os
import config
from application import (
db,
migrate
)
from flask import Blueprint, render_template
controller = Blueprint('home', __name__)
@controller.route('/', methods=['GET'])
def index():
return "Home Controller"
from application import db
class User(db.Model):
__tablename__ = 'users'
id = db.Column(
db.Integer,
primary_key=True
)
name = db.Column(
db.String(255),
nullable=False
)
email = db.Column(
db.String(255),
unique=True,
nullable=False
)
password = db.Column(
db.String(255),
nullable=False
)
role = db.Column(
db.String(50),
nullable=False,
server_default="user"
)
created_at = db.Column(
db.DateTime,
server_default=db.func.now(),
nullable=False
)
updated_at = db.Column(
db.DateTime,
server_default=db.func.now(),
nullable=False
)
def register_blueprints(app):
from application.controllers import (
home
)
app.register_blueprint(home.controller)
def import_models():
# import database models
from application.models import (
user
)
def initialize_flask_app():
# Initialize the core application.
app = Flask(
__name__,
instance_relative_config=False,
template_folder=config.Config.TEMPLATES_FOLDER,
static_folder=config.Config.STATIC_FOLDER,
static_url_path=config.Config.STATIC_FOLDER_PATH
)
app.config.from_object('config.Config')
return app
def initialize_plugins(app):
# Initialize Plugins
db.init_app(app)
migrate.init_app(app, db)
from flask import Flask
import os
import config
from application import (
db,
migrate
)
def register_blueprints(app):
from application.controllers import (
home
)
app.register_blueprint(home.controller)
def initialize_plugins(app):
# Initialize Plugins
db.init_app(app)
migrate.init_app(app, db)
def import_models():
# import database models
from application.models import (
user
)
def initialize_flask_app():
# Initialize the core application.
app = Flask(
__name__,
instance_relative_config=False,
template_folder=config.Config.TEMPLATES_FOLDER,
static_folder=config.Config.STATIC_FOLDER,
static_url_path=config.Config.STATIC_FOLDER_PATH
)
app.config.from_object('config.Config')
return app
def create_app():
from application.settings import (
initialize_flask_app,
initialize_plugins,
import_models,
register_blueprints
)
app = initialize_flask_app()
with app.app_context():
# initialize plugins
initialize_plugins(app)
# register blueprints
register_blueprints(app)
# import models
import_models()
return app
from dotenv import load_dotenv
from flask_migrate import Migrate
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy import MetaData
load_dotenv()
convention = {
"ix": 'ix_%(column_0_label)s',
"uq": "uq_%(table_name)s_%(column_0_name)s",
"ck": "ck_%(table_name)s_%(column_0_name)s",
"fk": "fk_%(table_name)s_%(column_0_name)s_%(referred_table_name)s",
"pk": "pk_%(table_name)s"
}
metadata = MetaData(naming_convention=convention)
db = SQLAlchemy(metadata=metadata)
migrate = Migrate()
def create_app():
from application.settings import (
initialize_flask_app,
initialize_plugins,
import_models,
register_blueprints
)
app = initialize_flask_app()
with app.app_context():
# initialize plugins
initialize_plugins(app)
# register blueprints
register_blueprints(app)
# import models
import_models()
return app
from application import create_app
app = create_app()
if __name__ == '__main__':
app.run(host='0.0.0.0')
SQLALCHEMY_DATABASE_URI = "mysql+mysqlconnector://muhammadsaim:[email protected]:3306/python_flask_blog"
flask db init
flask db migrate -m "Create User table."
python run.py