У меня есть таблица со следующим декларативным определением:
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 записи с одинаковым именем "name"?
Если нет, следует ли мне хранить в памяти все существующие имена, чтобы я мог проверить, существуют ли они, прежде чем создавать объект?