Я связываю две базы данных через отношения один-к-одному. Один уже установлен, другой - это Dynami c с точки зрения количества столбцов (кроме ключевого столбца).
Следующий код:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///data/items.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS']=False
db = SQLAlchemy(app)
class Items(db.Model):
item_id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(40))
item_embeddings = db.relationship('ItemEmbeddings', backref='items', uselist=False,lazy='dynamic')
def __repr__(self):
return '<Item {}>'.format(self.item_id)
class ItemEmbeddings(db.Model):
item_id = db.Column('item_id', db.Integer, db.ForeignKey('items.item_id'), primary_key=True)
__table_args__ = {
'metadata':db.metadata,
'autoload_with': db.engine,
'extend_existing': True,
}
приводит к этой ошибке:
File ".../lib/python3.7/site-packages/sqlalchemy/util/langhelpers.py", line 855, in __get__
obj.__dict__[self.__name__] = result = self.fget(obj)
File ".../lib/python3.7/site-packages/sqlalchemy/sql/selectable.py", line 645, in foreign_keys
return self.foreign_keys
File ".../lib/python3.7/site-packages/sqlalchemy/util/langhelpers.py", line 855, in __get__
obj.__dict__[self.__name__] = result = self.fget(obj)
File ".../lib/python3.7/site-packages/sqlalchemy/sql/selectable.py", line 643, in foreign_keys
self._init_collections()
RecursionError: maximum recursion depth exceeded
Должен ли я решить эту проблему, установив ограничение ForeignKey? БД еще не существует, поэтому я запускаю db.create_all после импорта модели. Есть ли какое-то решение, чтобы сделать эту работу?