sqlautocode:表中需要的主键?

时间:2011-02-15 12:11:56

标签: python web-applications turbogears turbogears2

这与SQLAlchemy& S中的主键约束有关。 sqlautocode。 我有SA 0.5.1& sqlautocode 0.6b1 我有一个没有主键的MySQL表。 sqlautocode吐出“无法组装任何主键列”的回溯。

我可以用一个补丁来解决这个问题,它会反映没有主键的表格吗?

谢谢, Vineet Deodhar

3 个答案:

答案 0 :(得分:0)

我不这么认为。如何将ORM用于将对象持久保存到数据库而无需任何方式来唯一标识记录?

但是,大多数ORM接受primary_key参数,因此如果未在数据库中明确定义密钥,则可以指示密钥。

答案 1 :(得分:0)

如果基础表上的列组合唯一标识它,我们已成功伪造sqa。

如果这是您自己的表并且您没有在线,请添加主键整数列等。

我们甚至能够在数据库中映射现有的遗留表,其中a)no pk和b)其他列中没有主键的代理。它不是Oracle,而是我们能够破解sqa将Oracle的rowid视为pk,尽管这对于插入和查询是安全的...更新是不可能的,因为它不能唯一地标识它应该更新哪一行。但这些都是丑陋的黑客,所以如果你能帮助它,就不要走那条路。

答案 2 :(得分:0)

如果问题是sqlautocode不会生成您的类代码,因为它无法确定表的PK,那么您可能能够更改该代码以满足您的需求(即使它意味着生成不具备的SQLA代码)有PKs)。最后,如果您正在使用SQLA的ORM端,那么您将需要定义为PK的字段,即使数据库没有明确标记它们也是如此。