self.default = kwargs.pop('default', None)
self.server_default = kwargs.pop('server_default', None)
self.server_onupdate = kwargs.pop('server_onupdate', None)
+
+ # these default to None because .index and .unique is *not*
+ # an informational flag about Column - there can still be an
+ # Index or UniqueConstraint referring to this Column.
self.index = kwargs.pop('index', None)
self.unique = kwargs.pop('unique', None)
+
self.system = kwargs.pop('system', False)
self.quote = kwargs.pop('quote', None)
self.doc = kwargs.pop('doc', None)
"To create indexes with a specific name, create an "
"explicit Index object external to the Table.")
Index(expression._truncated_label('ix_%s' % self._label),
- self, unique=self.unique)
+ self, unique=bool(self.unique))
elif self.unique:
if isinstance(self.unique, basestring):
raise exc.ArgumentError(
assert c.name == 'named'
assert c.name == c.key
+ def test_unique_index_flags_default_to_none(self):
+ c = Column(Integer)
+ eq_(c.unique, None)
+ eq_(c.index, None)
+
+ c = Column('c', Integer, index=True)
+ eq_(c.unique, None)
+ eq_(c.index, True)
+
+ t = Table('t', MetaData(), c)
+ eq_(list(t.indexes)[0].unique, False)
+
+ c = Column(Integer, unique=True)
+ eq_(c.unique, True)
+ eq_(c.index, None)
+
+ c = Column('c', Integer, index=True, unique=True)
+ eq_(c.unique, True)
+ eq_(c.index, True)
+
+ t = Table('t', MetaData(), c)
+ eq_(list(t.indexes)[0].unique, True)
def test_bogus(self):
assert_raises(exc.ArgumentError, Column, 'foo', name='bar')