我有以下声明定义的表:如何处理SQLAlchemy的表定义唯一约束
class Type(Base):
__tablename__ = 'Type'
id = Column(Integer, primary_key=True)
name = Column(String, unique = True)
def __init__(self, name):
self.name = name
列“名”具有独特的约束,但我能做到
type1 = Type('name1')
session.add(type1)
type2 = Type(type1.name)
session.add(type2)
因此,可以看到,唯一的约束根本不被检查,因为我已经向会话2添加了具有相同名称的对象。
当我做session.commit()
,我得到一个mysql错误,因为约束也在mysql表中。
sqlalchemy是否有可能提前告诉我,我无法做出或识别它,并且没有用相同的“名称”柱插入2个条目? 如果不是,我应该在内存中保存所有现有的名称,以便在创建对象之前检查它们是否存在?
我是唯一一个将数据插入那里,所以我会确保这种情况不会发生。我的问题具体是关于sqlalchemy如何处理字段的唯一性 – duduklein 2011-04-20 16:53:39
@duduklein它不处理唯一性。我的回答描述了为什么。 – 2011-04-21 05:00:18