sqlalchemy db.create_all проблема, когда я пытаюсь использовать функцию в python cli - PullRequest
0 голосов
/ 28 марта 2020

Хорошо, у меня есть таблицы, размеченные с определениями классов repr , и я получаю эту ошибку, когда пытаюсь использовать db.create_all() в python

sqlalchemy.exc.NoReferencedTableError: Foreign key associated with column 'subuser_table.userid' could not find table 'usersTable' with which to generate a foreign key to target column 'userid'

Мой код показан ниже:

db = SQLAlchemy(app)

class usersTable(db.Model):
    userid = db.Column(db.Integer, primary_key=True)
    fname = db.Column(db.String, nullable=False)
    lname = db.Column(db.String, nullable=False)
    email = db.Column(db.String, unique=True, nullable=False)
    username = db.Column(db.String, unique=True, nullable=False)
    password = db.Column(db.String, nullable=False)
    joined = db.Column(db.Date, nullable=False)
    package = db.Column(db.String, nullable=False)
    subuser = db.relationship('Subuser', backref='user', lazy=True)

    def __repr__(self):
        return f"users_table({self.fname}, {self.lname}, {self.email}, {self.username}, {self.password}, {self.joined}, {self.package})"

class subuserTable(db.Model):
    userid = db.Column(db.Integer, db.ForeignKey('users_table.userid'), nullable=False)
    subid = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String, unique=True, nullable=False)
    password = db.Column(db.String, nullable=False)
    fname = db.Column(db.String, nullable=False)
    lname = db.Column(db.String, nullable=False)
    admin = db.Column(db.Boolean, default=False)

    def __repr__(self):
        return f"subuser_table({self.fname}, {self.lname}, {self.email}, {self.username}, {self.password}, {self.joined}, {self.package})"

У меня есть URI в другом файле, и он правильно связывается с базой данных. Я просто не могу создать эти таблицы из-за ошибки в противопоказаниях. Если у кого-то есть идеи, пожалуйста, дайте мне знать

1 Ответ

0 голосов
/ 30 марта 2020

В другом файле остался артефакт, имя которого я не изменил. Ошибка действительно не помогла, проверьте ваши файлы!

...