我正在編寫一個小型的sqlalchemy shim,用一些輕量級的數據轉換(主要是更改字段名稱)從MySQL數據庫中導出數據。我當前的腳本工作正常,但需要我基本上描述我的模型兩次 - 一次在類聲明中,一次作爲迭代的字段名稱列表。聲明式類的SQLAlchemy反省
我想弄清楚如何使用自省來標識列訪問器的行對象上的屬性。下面的工作幾乎是完美的:
for attr, value in self.__class__.__dict__.iteritems():
if isinstance(value, sqlalchemy.orm.attributes.InstrumentedAttribute):
self.__class__._columns.append(attr)
,除了我的一對多關係訪問器也是sqlalchemy.orm.attributes.InstrumentedAttribute的情況下,我需要跳過這些。在檢查課程詞典的時候,有什麼辦法可以區分兩者嗎?
我在sqlalchemy introspection上找到的大多數文檔都涉及到metadata.table,但由於我正在重命名列,所以這些數據不是可以輕鬆映射的。
這似乎比檢查metadata.tables ['mytable']。columns更普遍有用,但它似乎不允許我發現描述符分配給我的實體類的類變量,所以我如何產生輸出映射類屬性名稱到它們的值的原始問題。 – 2010-08-01 16:11:08