SQLAlchemy 0.8 は、次の単純な自己結合に対して間違った SQL を生成する -
class ScheduledJob(Base):
Id = Column('Id', Integer, primary_key=True)
DependentJob1 = Column('DependentJob1', Integer)
DJ1 = aliased(ScheduledJob)
query = dbsession.query(ScheduledJob.Id, DJ1.Id).outerjoin(
DJ1, ScheduledJob.DependentJob1==DJ1.Id)
print query
間違ったSQLを出力します-
SELECT "ScheduledJob"."Id" AS "ScheduledJob_Id"
FROM "ScheduledJob" LEFT OUTER JOIN "ScheduledJob" AS "ScheduledJob_1" ON
"ScheduledJob"."DependentJob1" = "ScheduledJob"."Id"
あるべきだったのに--
SELECT "ScheduledJob"."Id" AS "ScheduledJob_Id",
"ScheduledJob_1"."Id" AS "ScheduledJob_1_Id"
FROM "ScheduledJob" LEFT OUTER JOIN "ScheduledJob" AS "ScheduledJob_1" ON
"ScheduledJob"."DependentJob1" = "ScheduledJob_1"."Id"
さらに不可解なのは、SQLAlchemy ドキュメントに従って試したすべてのスタンドアロンのエイリアス/結合/自己結合テストがすべて正常に機能することです。
何がうまくいかなかったのでしょうか?どんなポインタでも大歓迎です。
ところで、私は複数のデータベースをマッピングしていますが、この問題に関連している可能性がありますか?