Ошибки миграции SQLALCHEMY: дублирование столбца и неэтип.Python

Программы на Python
Ответить
Anonymous
 Ошибки миграции SQLALCHEMY: дублирование столбца и неэтип.

Сообщение Anonymous »

В настоящее время я работаю с SQLAlchemy в приложении Flask и в процессе миграции столкнулся с двумя различными проблемами. Я надеюсь, что кто-нибудь поможет мне понять, что может быть их причиной и как их устранить.
1. Ошибка повторяющегося имени столбца
Я пытаюсь добавить новый столбец в существующую таблицу с помощью миграции, но столкнулся со следующей ошибкой:

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

sqlalchemy.exc.OperationalError: (MySQLdb.OperationalError) (1060, "Duplicate column name 'code'")
[SQL: ALTER TABLE student_class_code ADD COLUMN code VARCHAR(50) NOT NULL]
Похоже, код столбца уже существует в таблице Student_class_code , но сценарий миграции пытается добавить его снова. Я подтвердил, что столбец присутствует в базе данных, поэтому я не уверен, почему его снова добавляют. < /P>

Как мне изменить сценарий миграции, чтобы Эта ошибка? < /li>
Должен ли я вручную изменить таблицу перед запуском миграции, или есть способ проверить SQLalchemy для существования столбца? < /li>
< /ul>
2.

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

NoneType
Ошибка во время миграции[/b]
Помимо вышесказанного, я также вижу эту ошибку во время миграции:

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

TypeError: object of type 'NoneType' has no len()
Я подозреваю, что это связано с некоторой операцией базы данных, которая ожидает значения, но вместо этого не получает ни одного . Я не уверен, где проблема запускается в процессе миграции или какую часть модели или сценария миграции вызывает ее. < /P>

Как я могу отлаживать и Определите источник этой ошибки Nonetype ? > < /ul>

Дополнительный контекст: < /h3>

Я использую flask- SQLalchemy и mysql в качестве базы данных. Br /> Вопрос возникает при запуске Flask DB Upgrade < /code> после внесения изменений в схему базы данных. < /li>
< /ul>

Соответствующие модели: < /h3>
class User(UserMixin, db.Model):
__tablename__ = 'users'

id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(50), unique=True, nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False)
password = db.Column(db.String(128), nullable=False)
created_by_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=True)

class AssignmentReminder(db.Model):
__tablename__ = 'assignment_reminders'

id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(100), nullable=False)
due_date = db.Column(db.DateTime, nullable=False)
recipient_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=True)

class ClassCode(db.Model):
__tablename__ = 'class_code'

id = db.Column(db.Integer, primary_key=True)
code = db.Column(db.String(255), nullable=False)
created_at = db.Column(db.DateTime, default=datetime.utcnow, nullable=False)

class StudentClassCode(db.Model):
__tablename__ = 'student_class_code'

id = db.Column(db.Integer, primary_key=True)
student_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False)
class_code_id = db.Column(db.Integer, db.ForeignKey('class_code.id'), nullable=False)
code = db.Column(db.String(255), nullable=False)
< /code>
Любая помощь будет высоко оценена! Заранее спасибо за ваше время.


Подробнее здесь: https://stackoverflow.com/questions/793 ... -flask-app
Ответить

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

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

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

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

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