Я пытаюсь создать связь «многие ко многим», используя флягу-sqlalchemy. Но я продолжаю получать ошибку
sqlalchemy.exc.InternalError: (pymysql.err.InternalError) (1684, «Таблица 'db'. 'User' была пропущена, поскольку ее определение изменяется с помощью параллельного оператора DDL")
[SQL: DESCRIBE user
]
Я попытался создать таблицу, используя db.Table
, но безуспешно. Я следовал точно так же, как на сайте sqlalchemy о фляге
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
def create_app():
app = Flask(__name__, instance_relative_config=True)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://user:password@localhost/db?charset=utf8mb4'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
user_tracer = db.Table('user_tracer',
db.Column('user_id', db.Integer, db.ForeignKey('user.user_id'), primary_key=True),
db.Column('tracer_id', db.Integer, db.ForeignKey('tracer.tracer_id'), primary_key=True)
)
class Tracer(db.Model):
__tablename__ = 'tracer'
tracer_id = db.Column(db.Integer(), primary_key=True, nullable=False, unique=True)
class User(db.Model):
__tablename__ = 'user'
user_id = db.Column(db.Integer(), primary_key=True, nullable=False, unique=True)
tracers = db.relationship('Tracer', secondary=user_tracer, lazy='subquery',
backref=db.backref('users', lazy=True))
with app.app_context():
db.init_app(app=app)
db.create_all()
return app