Fix circular imports issue by separating SQLAlchemy db instance into database.py

This commit is contained in:
Xevion
2022-03-28 17:57:52 -05:00
parent 3ea945b99f
commit 2d014628e4
7 changed files with 9 additions and 6 deletions

View File

@@ -1 +1,2 @@
FLASK_APP=app.py FLASK_APP=app.py
FLASK_ENV=development

View File

5
app.py
View File

@@ -9,8 +9,7 @@ from flask import Flask, render_template, request
from flask_login import LoginManager, current_user from flask_login import LoginManager, current_user
from flask_sqlalchemy import SQLAlchemy from flask_sqlalchemy import SQLAlchemy
from werkzeug.security import generate_password_hash from werkzeug.security import generate_password_hash
from database import db
db = SQLAlchemy()
def create_app(): def create_app():
@@ -25,7 +24,7 @@ def create_app():
# Heroku deployment # Heroku deployment
if app.config['ENV'] == 'production': if app.config['ENV'] == 'production':
app.config['SECRET_KEY'] = os.getenv('SECRET_KEY') app.config['SECRET_KEY'] = os.getenv('SECRET_KEY')
app.config['SQLALCHEMY_DATABASE_URI'] = os.getenv('DATABASE_URL').replace('postgres://', 'postgresql://', 1) app.config['SQLALCHEMY_DATABASE_URI'] = os.getenv('DATABASE_URL', '').replace('postgres://', 'postgresql://', 1)
db.init_app(app) db.init_app(app)

View File

@@ -3,7 +3,7 @@ from flask_login import login_required, login_user, logout_user, current_user
from werkzeug.security import check_password_hash, generate_password_hash from werkzeug.security import check_password_hash, generate_password_hash
from models import User from models import User
from app import db from database import db
blueprint = Blueprint('auth', __name__) blueprint = Blueprint('auth', __name__)

3
database.py Normal file
View File

@@ -0,0 +1,3 @@
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()

View File

@@ -1,7 +1,7 @@
from flask import Blueprint, flash, redirect, request, url_for from flask import Blueprint, flash, redirect, request, url_for
from flask_login import current_user, login_required from flask_login import current_user, login_required
from app import db from database import db
from models import User, Post, Comment from models import User, Post, Comment
blueprint = Blueprint('forms', __name__) blueprint = Blueprint('forms', __name__)

View File

@@ -6,7 +6,7 @@ import humanize
from flask_login import UserMixin from flask_login import UserMixin
from sqlalchemy import func from sqlalchemy import func
from app import db from database import db
MAXIMUM_ONLINE_DELTA = datetime.timedelta(minutes=1) MAXIMUM_ONLINE_DELTA = datetime.timedelta(minutes=1)