1
當我使用SQLA繼承(我有與__mapper_args__
設置那裏mixin)我堅持一個問題,SQLAlchemy引發查詢異常。當with_polymorphic用於模型與order_by映射器arg呈現字符串
重現它:
- 型號應該有
__mapper_arg__
屬性與order_by
參數組到任何字符串。 - add
with_polymorphic('*')
調用此模型進行查詢。
class User(Base):
id = Column(Integer, primary_key=True)
name = Column(String)
__mapper_args__ = {'order_by': 'User.name'}
採用這種結構的一切工作得很好,除了當我們添加with_polymorphic('*')
查詢。
db.query(User).with_polymorphic('*')
這種失敗例外
File "/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 267, in clone
'no_replacement_traverse' in elem._annotations:
AttributeError: 'str' object has no attribute '_annotations'
我想這是一種錯誤的。但由於它在SQLA 0.7-0.9上重現,我對我遇到此問題的方式感到懷疑。也許我做錯了什麼?
此問題轉載於small testcase。
附:
本來我需要這個混入在我的項目:
class DocMixin(object):
id = Column(Integer)
title = Column(String(255))
@declared_attr
def __mapper_args__(cls):
return {'order_by': 'title'}
不幸的是,當我在MixIn中有字段時,它不適用於y的情況。 當我使用 – Lehych
@Lehych在這裏使用'cls.title'而不是''title''有什麼問題? –
然後我得到了一個異常:'CompileError:不能編譯Column對象,直到'name'被賦值爲止。 我想我最終找到了相關問題https://groups.google.com/forum/#!topic/sqlalchemy/Y5Tc-e3vZGI,其中邁克爾·拜爾說解決方案僅適用於SQLA> 0.8。 – Lehych