SQLAlchemy是否支持PostgreSQL的複合類型(http://www.postgresql.org/docs/devel/static/rowtypes.html)?我發現它有類似的東西(sqlalchemy.orm.composite
),但據我所知,這對我的目的不夠好。SQLAlchemy複合類型
我想製作一個單獨的類型,例如Amount
有value
和currency
,然後可以多次從同一個類是指它多次,並可能:
class Transfer(base):
__tablename__ = "transfer"
source_amount = Column(Amount)
target_amount = Column(Amount)
所有我見過的例子(例如this one)要求我指定列的名稱,這使得上面的方法變得不可能(列名會發生衝突)。
此外,我寧願有一列每個數量而不是兩個(因爲value
沒有什麼實際意義沒有currency
,我寧願數據庫照顧不要分離或混合它們)。看來Postgres可以做到這一點,我只需要一種方法向SQLAlchemy解釋我需要什麼。我嘗試閱讀http://docs.sqlalchemy.org/en/latest/core/custom_types.html,但它似乎專注於增加現有類型,而不是創建新的作爲複合材料(我不知道在impl
下放什麼)。
也許我應該放開SQLAlchemy並直接與psycopg2溝通?它有一個psycopg2.extras.register_composite
函數,但是一旦我這樣做,我仍然不知道如何說服SQLAlchemy識別註冊。我可能必須以某種方式將光標從psycopg2傳遞到SQLAlchemy,但我不知道該怎麼做。