我正在使用peewee作为我的mysql DB的ORM。 我的方案中有3个表,一个用于设备,一个用于应用程序,一个用于每个设备的每个设备应用程序和测试应用程序的结果。 APPS表如下:
package name | version name | version code |apk name
3个第一列是我的主键,因为我想要我的表中的每个修订版本,我希望根据某些版本代码轻松过滤应用程序(版本代码随git \ svn中的修订版增加,而版本名称代表版本本身取自开发分支)。 当我希望将APPS表作为我的TESTS表的参考表时,我的问题就开始了,这意味着每个测试都会引用APPS两次,一次是测试人员,一次是测试应用程序。 我不确定在我的TESTS表中是否有一个3字段的外键(这使它成为6!)是个好主意。
有什么好的解决方案吗? 我尝试添加带有自动增量的_ID字段作为'KEY',所以我将有一个数字单个字段可以访问,但是ORM并不真正支持它,我有点咬牙试图将其拉下来。
我的Db组织不好还是我需要简单地替换ORM?我认为如果没有ORM,我可能很容易将它拉下来......
答案 0 :(得分:1)
选项:
APPS
表中定义自动递增的主键。APPS
,pkg
和ver
上的vcode
表格中定义复合唯一键
{{1}}列。答案 1 :(得分:0)
这是一个非常晚的答案,但我想提供代码来告诉peewee关于复合键,如下所示。使用此构造时,Peewee不会在表中添加“id”列:
class SillyTable(peewee.Model):
field1 = peewee.IntegerField(null=False)
field2 = peewee.IntegerField(null=False)
# Composite key, no "id" column needed.
class Meta:
primary_key = peewee.CompositeKey('field1','field2')
我正在使用peewee v2.6.3和PyMySQL v0.6.3来访问MySQL。