Задать вопрос
UkaUkaa
@UkaUkaa
По специальности программист, по жизни леньтяй

Как правильно разделить на модули Python файл?

Есть файл main.py где я выполняю подключение к БД. К БД надо модели писать, так как все в одном файле писать не правильно, хочу разделить на модуль, но как правильно не знаю.

Пример кода main.py
from flask import Flask, redirect, render_template, request, url_for, redirect
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

app.config['SQLALCHEMY_DATABASE_URI'] = DATABASE
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True

db = SQLAlchemy(app)

class Users(db.Model):
    Id = db.Column(db.Integer, primary_key=True)
    Login = db.Column(db.String(255), nullable=False)

class Checks(db.Model):
    Id = db.Column(db.Integer, primary_key=True)
    PasswordHash = db.Column(db.String(255), nullable=False)


Хочу чтобы все модели были в файле models.py
Как правильно это сделать?
  • Вопрос задан
  • 809 просмотров
Подписаться 3 Простой Комментировать
Решения вопроса 1
ramzis
@ramzis
FullStackOverflow
Структура:
├── main.py
└── my_project
    ├── __init__.py
    ├── models.py
    ├── views.py


main.py
from my_project import app
app.run()


__init__.py
from flask import Flask, redirect, render_template, request, url_for, redirect
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

app.config['SQLALCHEMY_DATABASE_URI'] = DATABASE
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True

db = SQLAlchemy(app)

import project.views


models.py
from my_project import db

class Users(db.Model):
    Id = db.Column(db.Integer, primary_key=True)
    Login = db.Column(db.String(255), nullable=False)

class Checks(db.Model):
    Id = db.Column(db.Integer, primary_key=True)
    PasswordHash = db.Column(db.String(255), nullable=False)


views.py
from my_project import app
from my_project .models import Users, Checks

@app.route('/')
def index():
    return 'hello habr'
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы