Hi, I am struggling to get a simple recursive CTE query to work with sqlalchemy 1.0.14, sqlite backend (3.8.10.2) and pysqlite 2.8.2, python 2.7.12. Below is a reproducer:
from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column, String from sqlalchemy import orm from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker Base = declarative_base() class Obj(Base): __tablename__ = 'obj' id = Column(String, primary_key=True) parent_id = Column(String) engine = create_engine('sqlite:///') Base.metadata.create_all(engine) Session = sessionmaker(bind=engine) Session.configure(bind=engine) session = Session() a = Obj(id=u'1234') b = Obj(id=u'2345', parent_id='1234') c = Obj(id=u'3456', parent_id='1234') d = Obj(id=u'5678', parent_id='3456') session.add(a) session.add(b) session.add(c) session.add(d) session.commit() cteq = session.query(Obj).filter(Obj.parent_id == a.id).cte(recursive=True, name='cteq_n') cteq_alias = orm.aliased(cteq, name='cteq_alias_n') rekey_alias = orm.aliased(Obj, name='rekey_alias_n') r = cteq.union_all( session.query(rekey_alias).filter(rekey_alias.parent_id == cteq_alias.c.id) ) objs = session.query(Obj).select_from(r).all() print objs.all() which results in.. sqlalchemy.exc.OperationalError: (pysqlite2.dbapi2.OperationalError) no such table: cteq_alias_n [SQL: u'WITH RECURSIVE cteq_n(id, parent_id) AS \n(SELECT obj.id AS id, obj.parent_id AS parent_id \nFROM obj \nWHERE obj.parent_id = ? UNION ALL SELECT rekey_alias_n.id AS rekey_alias_n_id, rekey_alias_n.parent_id AS rekey_alias_n_parent_id \nFROM obj AS rekey_alias_n, cteq_alias_n AS cteq_alias_n \nWHERE rekey_alias_n.parent_id = cteq_alias_n.id)\n SELECT obj.id AS obj_id, obj.parent_id AS obj_parent_id \nFROM obj, cteq_n'] [parameters: (u'1234',)] Any pointers gratefully received! I must be missing something stupid. Thanks, Jonathan -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sqlalchemy+unsubscr...@googlegroups.com. To post to this group, send email to sqlalchemy@googlegroups.com. Visit this group at https://groups.google.com/group/sqlalchemy. For more options, visit https://groups.google.com/d/optout.