Следуя этому учебнику по использованию SQLAlchemy и Postgresql, я основал себя для создания файловой структуры моделей, представлений, шаблонов и т. Д. c ..
requirements.txt
run.py
website/
__init__.py
views/
models/
users.py
static/
templates/
Как Вы можете видеть, внутри моделей у меня users.py
from app import db
class Users(db.Model):
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key=True)
user = db.Column(db.String(), index=True, unique=True)
password = db.Column(db.String(128))
def __init__(self, user, password):
self.user = user
self.password= password
def __repr__(self):
return f"<User {self.user}>"
Мой init.py
from flask import Flask, render_template
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = "postgresql://postgres:postgres@localhost:5432/project"
db = SQLAlchemy(app)
migrate = Migrate(app, db)
#Routes
@app.route("/")
def index():
return render_template('index.html')
Теперь я использовал эти команды для создания пользовательской таблицы flask db init
, flask db migrate
flask db upgrade
. ОК, после этого была создана таблица с именем public.alembic_version
, но, как вы видите, пользователи не сделали.
Моя последняя попытка была вставить этот импорт from models import users
между:
migrate = Migrate(app, db)
from models import users
@app.route("/")
def index():
return render_template('index.html')
Но сообщение ModuleNotFoundError: No module named 'models'
Я думал, что я использую зарезервированное слово, даже меняю папку, имя страницы, ошибка сохраняется, просто меняю имя модуля.
Обновление:
Окончательный результат, этот пример работает для меня
run.py
from website import app
from website.models.users import User
app.run(host="0.0.0.0",debug=True,port=5000)
Обновление
requirements.txt
run.py
website/
__init__.py
views/
models.py
static/
templates/
То, что я изменил, это удалить папку моделей e создать файл models.py и добавление класса Users, Purchase, всего, что я хочу ...
Я взял этот импорт и включил в начало моего models.py
...
from website import app
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
import psycopg2
app.config['SQLALCHEMY_DATABASE_URI'] = "postgres://postgres:password@ipaddress:5432/databasename"
db = SQLAlchemy(app)
migrate = Migrate(app, db)
В __init__.py
добавлено в конце строки, после импорта чертежей, если я хочу, from website.models import Users
from flask import Flask, render_template
app = Flask(__name__)
from website.models import Usuario