Как создать таблицу из модели в другом файле в Flask Python? - PullRequest
0 голосов
/ 02 января 2019

Итак, я хочу создать базу данных, но я хочу разделить файл для лучшей наглядности, но я не могу понять, как я могу создать таблицу из другого файла.

В основном моя база данных создана, но таблица don 'кажется, что работает ...

здесь мой файл main.py:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///database.db'
db = SQLAlchemy(app)

if __name__ == "__main__":
app.run()

и вот мой файл model.py:

from main import db

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(20))

1 Ответ

0 голосов
/ 04 января 2019

Вам просто нужно импортировать его из файла, в котором он находится. Если ваш model.py находится внутри app/models, как app/models/model.py, тогда вы можете просто сделать

from app.models.model import User
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)

if __name__ == "__main__":
app.run()

Затем вы можете продолжить работу с моделью, как если бы она находилась в том же файле. Я также заметил, что вы импортируете db из main.py. Это приведет к круговой зависимости и откажется работать. Просто создайте файл __init__.py в том же каталоге, что и модель User, а затем инициализируйте базу данных в этом файле следующим образом:

from flask import current_app as app
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///database.db'
db = SQLAlchemy(app)

После этого импортируйте БД из __init__.py, вот так:

from . import db  # . here refers to the __init__.py file

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(20))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...