Я использую Flask-Restplus и SqlAlchemy для создания моей таблицы и Api. Проблема, с которой я столкнулся, выглядит следующим образом:
Сначала у меня есть user.py
, в котором есть 2 таблицы:
User.py
class User(db.Model):
__tablename__ = "users_info"
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
name = db.Column(db.Integer, unique=True, nullable=True)
device = db.relationship('Device', backref='user')
# .. some other field here
class Device(db.Model):
__tablename__ = "user_device"
device_id = db.Column(db.Integer, primary_key=True, autoincrement=True)
id = db.Column(db.Integer, db.ForeignKey(User.id))
# .. some other field here
На этом этапе я использовал эту 2 команду ниже с manage.py
для создания базы данных, и у меня нет проблем.
python manage.py db migrate
python manage.py db upgrade
manage.py
import os
import unittest
from flask_migrate import Migrate, MigrateCommand
from flask_script import Manager
from app import blueprint
from app.main import create_app, db
app = create_app(os.getenv('My_App') or 'dev')
app.register_blueprint(blueprint)
app.app_context().push()
manager = Manager(app)
migrate = Migrate(app, db)
manager.add_command('db', MigrateCommand)
@manager.command
def run():
app.run()
if __name__ == '__main__':
manager.run()
Теперь я хочу создать еще один файл с именем product.py
, который представляет собой новую таблицу для той же базы данных, как показано ниже:
Product.py
from .. import db
from .model.user import User
class Product(db.Model):
__tablename__ = "product"
product_id = db.Column(db.Integer, primary_key=True, autoincrement=True)
product_name = db.Column(db.String)
# plan here what you want in this table
user_id = db.Column(db.Integer, db.ForeignKey(User.user_id))
Как видите, класс Product
связан с User
с foreignKey
.
Результат:
Но я снова использую ту же команду для переноса, результат выглядит примерно так:
INFO [alembic.runtime.migration] Context impl SQLiteImpl.
INFO [alembic.runtime.migration] Will assume non-transactional DDL.
INFO [alembic.env] No changes in schema detected.
Похоже, что не обнаружил новую таблицу из моего нового файла.
Мой вопрос:
Как создать отдельный файл для создания другой таблицы базы данных?