Flask-SqlAlchemy Sqlite外键约束不起作用?

时间:2016-02-13 03:56:54

标签: python sqlite sqlalchemy foreign-keys flask-sqlalchemy

这是我的模特:

class Item(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    item_type_id = db.Column(db.Integer, db.ForeignKey('item_type.id'))
    purchase_price = db.Column(db.Integer, index=True)
    purchase_transaction_id = db.Column(db.Integer, db.ForeignKey('purchase_transaction.id'))
    supplier_id = db.Column(db.Integer, db.ForeignKey('supplier.id'))

class ItemType(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    item_type = db.Column(db.String(ITEM_TYPE_LENGTH), index=True, unique=True)
    items = db.relationship('Item', backref='item_type', lazy='dynamic')

所以这就是我所做的:

>>> db.session.add(models.Item(item_type_id=170, purchase_price=111, purchase_transaction_id=1, supplier_id=1)) 
>>> db.session.commit()

我添加了一个新项item_type_id是170,但item_type表只有id直到20。如果我检查了我的数据库,item成功添加,如果我做了ItemType.query.get(item.item_type_id)之类的查询,将返回None - 这意味着外键不存在

我已经阅读了sqlalchemysqlite中的文档,它们都应该有外键约束,我想知道它为什么不在我的工作

0 个答案:

没有答案