所以我使用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表上插入时,电话表为空,它插入没有问题。
我该如何解决这个问题?
答案 0 :(得分:1)
我同意调查数据库。如果您使用的是SQLite,请确保PRAGMA foreign_keys=ON
强制执行它们。
答案 1 :(得分:0)
外键是正确的方法(就像你做的那样),但表必须是InnoDB。如果表是MyISAM而不是没有任何外键限制因为MyISAM不使用外键。那么,你的表是InnoDB吗?
(我想发表评论,但不发表回答,但我的声誉太低,无法做到......)