Как избежать круговых импорта в приложении Flask с Flask Sqlalchemy Models?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как избежать круговых импорта в приложении Flask с Flask Sqlalchemy Models?

Сообщение Anonymous »

Я попадаю в колбу и создаю приложение, которое использует Flask Sqlalchemy. Я создал базовый API, который работает, когда весь код находится в одном файле, но хотел бы лучше организовать его, например, так:

shrong> App/models/user.py

Код: Выделить всё

from datetime import datetime
from app.app import db

class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
public_id = db.Column(db.String, unique=True)
admin = db.Column(db.Boolean)
username = db.Column(db.String(50), unique=True)
email = db.Column(db.String(50), unique=True)
password = db.Column(db.String(100))
subscription_plan = db.Column(db.Integer)
created_at = db.Column(db.DateTime, index=True,
default=datetime.utcnow())
updated_at = db.Column(db.DateTime, index=True, default=datetime.utcnow())
< /code>

[b] App/app.py[/b]

from flask import Flask, request, jsonify
from flask_sqlalchemy import SQLAlchemy
from werkzeug.security import generate_password_hash
import uuid

from app.models.user import User

app = Flask(__name__)

app.config['SQLALCHEMY_DATABASE_URI'] = #SQLALCHEMY_DATABASE_URI

db = SQLAlchemy(app)

# ... CRUD routes that will use User

@app.route('/user', methods=['POST'])
def create_user():
data = request.get_json()
hashed_password = generate_password_hash(data['password'])
new_user = User(
public_id=str(uuid.uuid4()),
username=data['username'],
password=hashed_password,
email=data['email'],
admin=data['admin'],
subscription_plan=data['subscription_plan']
)
db.session.add(new_user)
db.session.commit()
return jsonify({'message': 'User successfully created.'})

if __name__ == '__main__':
app.run(port=5000, debug=True)
Я хотел бы импортировать db из app/app.py в мой файл app/models/user.py , но когда я затем пытаюсь импортировать пользователь модели в app/app.py , он дает мне ошибку из -за ошибки из -за импорта Circular. Я понятия не имею, как обойти это, потому что кажется, что пользователь нуждается в DB после того, как он будет передан экземпляром App из app/app.py . < /p>

Я также хотел бы отодвинуть свои маршруты отсюда и в отдельные файлы для лучшей организации, поэтому пытаясь понять лучший способ избежать круговых импорта. Любая помощь очень ценится!

Подробнее здесь: https://stackoverflow.com/questions/487 ... emy-models
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как избежать круговых импорта в приложении Flask с Flask Sqlalchemy Models?
    Anonymous » » в форуме Python
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Как ViewModels and Services общаться в приложении Javafx + Spring Boot MVVM, чтобы избежать круговых зависимостей?
    Anonymous » » в форуме JAVA
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Как я могу избежать круговых зависимостей между двумя видами моделей в приложении Javafx + Spring Boot MVVM?
    Anonymous » » в форуме JAVA
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Tf.keras.models.load_model не загружает модель, сохраненную с помощью tf.keras.models.save_model
    Anonymous » » в форуме Python
    0 Ответы
    68 Просмотры
    Последнее сообщение Anonymous
  • Django Project Models.py Versus Models.py.py
    Anonymous » » в форуме Python
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»