#flask #flask-sqlalchemy #flask-restful
#flask #flask-sqlalchemy #flask-restful
Вопрос:
class VehicleModel(db.Model):
__tablenam__ = 'vehicle'
id = db.Column(db.Integer,primary_key=True)
class DriverModel(db.Model):
__tablename__ = 'driver'
id = db.Column(db.Integer,primary_key=True)
v_id = db.Column(db.Integer,db.ForeignKey('vehicle.id'))
v_rel = db.relationship('VehicleModel',backref=db.backref('vehicle',uselist=False))
def update(self,id,v_id):
self.id = id
self.v_id = v_id
db.session.commit()
В приведенном выше коде я не могу обновить значение v_id. Sqlalchemy также не выдает никаких ошибок sql. Я не знаю, метод обновления работает нормально, но не может обновить значение v_id. Значение v_id остается таким же, как оно было установлено при первом добавлении столбца.
Комментарии:
1. Я не совсем понимаю, какова ваша цель здесь. Кроме того, почему вы меняете идентификатор? Я не могу придумать ни одной причины для изменения id — это внутренняя вещь db, и ее изменение может что-то испортить.
2. послушайте, я просто пытаюсь обновить значение v_id из таблицы драйверов, которая является столбцом внешнего ключа, но, к сожалению, я не могу этого сделать
3. Попробуйте опустить
self.id = id
. Нет причин для измененияid
. Тогда, пожалуйста, отчитайтесь 🙂
Ответ №1:
Это связано с тем, что Alembic не может выполнять особенно подробные проверки ваших dB.Model
файлов, вам нужно изменить сценарий миграции самостоятельно. Если вы используете Flask-migrate, он будет находиться в папке migrations / versions. Измените это, используя синтаксис alembic, найденный в другом месте файла, чтобы изменить внешний ключ.
Комментарии:
1. я не хочу ничего переносить, все, что я хочу, это просто обновить значение внешнего ключа!
2. Что вы используете для внесения изменений в схему базы данных?
Ответ №2:
Ну, это сработало автоматически после внесения определенных изменений в отношение, так что неважно! И спасибо всем за ваши ответы!
Комментарии:
1. Привет, Рам, у меня такая же проблема, не могли бы вы сообщить мне, какие изменения вы внесли, чтобы заставить его работать?