У меня есть модель:
class User(db.Model, UserMixin):
id = db.Column(db.Integer, primary_key = True)
login = db.Column(db.String(20), unique = True, nullable = False)
username = db.Column(db.String(200), nullable = True)
password = db.Column(db.String(60), nullable = False)
user_level = db.Column(db.Integer, nullable = False)
parent_id = db.Column(db.Integer, db.ForeignKey('user.id'))
terminals = db.relationship('Terminal', backref='owner', lazy = True)
controled_users = db.relationship('User', backref=db.backref('parent', remote_side=[id]), lazy = True)
def get_children_list(self) -> []:
beginning_getter = db.session.query(User).\
filter(User.id == id).cte(name='children_for', recursive=True)
with_recursive = beginning_getter.union_all(
db.session.query(User).filter(User.parent_id == beginning_getter.c.id)
)
return db.session.query(with_recursive).all()
def __repr__(self):
return "User('{0}')".format(self.username)
Таким образом, у каждого User
может быть ребенок пользователя, который может иметь своих детей.
Я попытался получить список всех детей:
current_user.get_children_list()
И получил ошибку:
sqlalchemy.exc.InterfaceError: (sqlite3.InterfaceError) Error binding parameter 0 - probably unsupported type.
[SQL: WITH RECURSIVE children_for(id, login, username, password, user_level, parent_id) AS
(SELECT user.id AS id, user.login AS login, user.username AS username, user.password AS password, user.user_level AS user_level, user.parent_id AS parent_id
FROM user
WHERE user.id = ? UNION ALL SELECT user.id AS user_id, user.login AS user_login, user.username AS user_username, user.password AS user_password, user.user_level AS user_user_level, user.parent_id AS user_parent_id
FROM user, children_for
WHERE user.parent_id = children_for.id)
SELECT children_for.id AS children_for_id, children_for.login AS children_for_login, children_for.username AS children_for_username, children_for.password AS children_for_password, children_for.user_level AS children_for_user_level, children_for.parent_id AS children_for_parent_id
FROM children_for]
[parameters: (<built-in function id>,)]
(Background on this error at: http://sqlalche.me/e/rvf5)
Не можете найти в чем здесь проблема?