2011-02-15 21 views
0

這與SQLAlchemy & sqlautocode中的主鍵約束有關。 我有SA 0.5.1 & sqlautocode 0.6b1 我有一個沒有主鍵的MySQL表。 sqlautocode spits traceback「無法組裝任何主鍵列」。sqlautocode:表中所需的主鍵?

我可以使用補丁修復這個問題嗎?它會反映無w/o主鍵的表嗎?

感謝, 維尼特Deodhar

回答

0

我不這麼認爲。 ORM是如何在沒有任何方法來唯一標識記錄的情況下將對象持久存儲到數據庫的?

但是,大多數ORM接受primary_key參數,因此如果在數據庫中未明確定義該鍵,則可以指示該鍵。

0

如果底層表上的列是唯一標識的,那麼我們已經成功僞造了sqa。

如果這是你自己的表,並且你沒有生存,請添加一個主鍵整數列或其他東西。

我們甚至能夠映射數據庫中現有的遺留表格,其中a)no pk和b)其他列中的主鍵沒有代理。 Oracle不是MySQL,但我們能夠通過sqa來查看Oracle的rowid作爲pk,雖然這對於插入和查詢來說只是安全的...更新是不可能的,因爲它不能唯一地標識它應該更新的行。但是這些都是醜陋的黑客,所以如果你能幫助它,不要走這條路。

0

如果問題是sqlautocode不會生成類代碼,因爲它無法確定表的PK,那麼您可能會更改該代碼以適合您的需求(即使這意味着生成不會生成SQLA代碼沒有PK)。最終,如果您使用的是SQLA的ORM方面,那麼即使數據庫沒有明確標記爲PK,也需要定義爲PK的字段。