Tengo una tabla con la siguiente definición declarativa:¿Cómo funciona sqlalchemy manejar restricción única en la definición de la tabla
class Type(Base):
__tablename__ = 'Type'
id = Column(Integer, primary_key=True)
name = Column(String, unique = True)
def __init__(self, name):
self.name = name
la columna "Nombre" tiene una restricción única, pero soy capaz de hacer
type1 = Type('name1')
session.add(type1)
type2 = Type(type1.name)
session.add(type2)
Por lo tanto, como se puede ver, la restricción única no se comprueba en absoluto, ya que he agregado a la sesión 2 objetos con el mismo nombre.
Cuando hago session.commit()
, obtengo un error mysql ya que la restricción también está en la tabla mysql.
¿Es posible que sqlalchemy me avise de antemano que no puedo o no lo identifico y no inserta 2 entradas con la misma columna de "nombre"? Si no, ¿debo mantener en la memoria todos los nombres existentes, para poder verificar si existen o no, antes de crear el objeto?
voy a ser el único insertar datos allí, así que va a asegurarse de que esto no suceda. Mi pregunta es específicamente sobre cómo sqlalchemy maneja la unicidad de un campo – duduklein
@duduklein No maneja la exclusividad. Y mi respuesta describe por qué. –