Peewee插入没有外键

时间:2017-02-01 15:12:18

标签: python sqlite peewee

所以我使用peewee在python中创建数据库。

class BaseModel(Model):
    class Meta:
        database = db

class Phone(BaseModel):
    '''Phone database model.'''
     model = CharField(max_length=15, unique=True, primary_key=True)

class Imei(BaseModel):
    '''Imei database model.'''
    imei = CharField(max_length=15, unique=True, primary_key=True)
    model = ForeignKeyField(Phone, to_field="model", related_name="imei's from model")
    registered = BooleanField(default=False)
    timestamp = DateTimeField(default=datetime.datetime(2014, 1, 1, 0, 0))
    email = CharField(max_length=50, null=True)

我想在这里实现的是,每当我在“Imei”表上插入时,如果模型未在“电话”表中列出,则不会插入。

我使用外键做了那个,但问题是当我在imei表上插入时,电话表为空,它插入没有问题。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

我同意调查数据库。如果您使用的是SQLite,请确保PRAGMA foreign_keys=ON强制执行它们。

答案 1 :(得分:0)

外键是正确的方法(就像你做的那样),但表必须是InnoDB。如果表是MyISAM而不是没有任何外键限制因为MyISAM不使用外键。那么,你的表是InnoDB吗?

(我想发表评论,但不发表回答,但我的声誉太低,无法做到......)