Ошибка NoSuchTableError: - при удалении таблицы. колба - PullRequest
0 голосов
/ 05 июля 2019

В своем приложении он поочередно создал три модели и связи между ними:

class Operation(db.Model):
    __tablename__ = "operation"
    id = db.Column(db.Integer, primary_key=True)    
    date_operation = db.Column(db.DateTime)    
    status_id = db.Column(db.Integer, db.ForeignKey('status.id'))
    status = db.Column(db.String(60))    
    contragent_id = db.Column(db.Integer, db.ForeignKey('contragent.id'))
    contragent = db.Column(db.String(240))

    def __repr__(self):
        return '<Operation {}>'.format(self.code)


class Contragent(db.Model):
    __tablename__ = "contragent"
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(360))
    code = db.Column(db.Integer, index=True)
    adress = db.Column(db.String(480))
    inn = db.Column(db.Integer)
    operations = db.relationship('Operation',uselist=False, backref='operat')  

    def __repr__(self):
        return '<Contragent {}>'.format(self.name)


class Status(db.Model):
    __tablename__ = "status"
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(360))    
    timestamp = db.Column(db.DateTime, default=datetime.datetime.utcnow)
    operations = db.relationship('Operation', uselist=False, backref='operat')

    def __repr__(self):
        return '<Status {}>'.format(self.name)

После создания модели состояния с operations = db.relationship ('Operation', uselist = False, backref = 'operat') база данных вышла из строя.При попытке удалить модель Status перед закомментированием класса Status возникает ошибка:

(venv) C:\Users\User\testapp>flask db migrate -m "status table"
INFO  [alembic.runtime.migration] Context impl SQLiteImpl.
INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
Traceback (most recent call last):
    ....
        raise exc.NoSuchTableError(table.name)
sqlalchemy.exc.NoSuchTableError: status

Что вызывает ошибку и как я могу удалить таблицу Status, чтобы снова создать правильную ссылку?

1 Ответ

0 голосов
/ 05 июля 2019

вы использовали status.id в качестве внешнего ключа в таблице операций. Удалите все ссылки на таблицу состояния, а затем попытайтесь удалить таблицу.Может быть, это решит проблему для вас.

...