什麼是使用SQLAlchemy在Django項目執行復雜查詢的最佳選擇嗎?我找到了寧靜,但它看起來不像一個有很多用戶的項目......任何建議?的SQLAlchemy在Django項目執行復雜查詢
原因:我有整個項目30-40 RawQueries和維護這些疑問是痛苦的......我想的SQLAlchemy可以提供在這種情況下更好的體驗。
UPDATE。
主要目標實現的是一次寫一些大的複雜的查詢,並在以後改進它,因爲我需要:
q = get_big_complex_sqlalachemy_query()
mine = q.filter_by(table.c.created_by_id=1)
closed = q.filter_by(table.c.is_closed=True)
使用Django和SQLAlchemy的最大的問題是事務管理。如果您使用大型事務(每個請求一次事務),SQLAlchemy在您提交它們之前不會看到任何更改(快速調試:)。所以我爲SQLAlchemy編寫了使用Django連接的自定義連接池。這也不理想(現在測試中存在問題,因爲SQLAlchemy喜歡將事務中的每個選擇都包裝起來,而且我仍然不知道如何禁用它),但它看起來更好。
而且Django ORM無法完成任務嗎? – miku
@miku,例如:我怎樣才能對一個表進行多次連接?像LEFT JOIN標籤t1 ... LEFT JOIN標籤t2?我發現的唯一方法是編寫RawQuery,但正如我所說,它看起來像sqlalchemy可以爲此提供更好的方法......至少要通過SQLAlchemy生成SQL並將其傳遞給RawQuery。 –
@Vladimir:使用.extra(tables = ['table1','table2'])怎麼樣? –