0
我正在使用sqlalchemy存儲文件路徑。目前這些存儲爲絕對路徑,但我需要將它們存儲爲相對路徑。不過,我不希望每次需要時都要用基本目錄手動加入路徑,而應該在它們映射到對象之前自動完成。通過這種方式,無論何時查詢數據庫,我都會返回一個絕對路徑,即使它們是相對存儲的。我將如何做到這一點? Mapper配置?在將屬性映射到SQLAlchemy中的對象之前編輯屬性
我正在使用sqlalchemy存儲文件路徑。目前這些存儲爲絕對路徑,但我需要將它們存儲爲相對路徑。不過,我不希望每次需要時都要用基本目錄手動加入路徑,而應該在它們映射到對象之前自動完成。通過這種方式,無論何時查詢數據庫,我都會返回一個絕對路徑,即使它們是相對存儲的。我將如何做到這一點? Mapper配置?在將屬性映射到SQLAlchemy中的對象之前編輯屬性
可能的解決方案之一 - 將方法添加到將相對路徑轉換爲絕對路徑的映射類中。此方法需要知道根目錄路徑 - 可以由全局範圍變量定義。
global_base_path = "/home/user"
...
class Path(Base):
...
relative_path = Column(String(2048))
...
@property
def absolute_path(self):
return os.path.join(global_base_path,self.relative_path)
q = session.query(Path)
c = q.first()
print c.absolute_path
正是我在找什麼。 –
我有一個問題,讓這個工作。按照您的建議使用屬性可以正常工作,直到我試圖在查詢中使用它。 AFAIK要做到這一點我需要混合屬性,對吧?但我在解決問題方面遇到了問題。我所做的所有替換@property與@hybrid_property,當我嘗試查詢時,我得到這個錯誤「TypeError:該子句的布爾值未定義」 –
我可能有一些想法如何處理這個新問題。請發佈您的最新模型和查詢代碼,你有問題。你可以在[stackoverflow.com](http://stackoverflow.com/questions/tagged/sqlalchemy)上創建新的問題 - 或者使用[gist](https://gist.github.com/)。 – vvladymyrov