Я гуглил, но не смог найти ответ на этот, казалось бы, простой вопрос.
У меня два отношения: клиент и заказ. Каждый заказ связан с одним клиентом и поэтому имеет отношение FK к таблице клиентов. Отношения с клиентами хранят только имена клиентов, и я установил уникальное ограничение для таблицы клиентов, за исключением повторяющихся имен.
Допустим, я создаю новый экземпляр заказа и устанавливаю клиента для заказа. Что-то вроде:
order_instance.customer = Customer("customer name")
Когда я сохраняю экземпляр заказа, SqlAlchemy будет жаловаться, если клиент с таким именем уже существует в таблице клиентов.
Как мне указать SqlAlchemy вставлять в таблицу клиентов, если клиент с таким именем еще не существует, или просто игнорировать (или даже обновлять) отношения с клиентами? Я не хочу каждый раз проверять, существует ли уже клиент с каким-то именем ...
---- Редактировать ---
Таблица Customer имеет уникальное ограничение, так что никакие два клиента не могут иметь одинаковые имена.
Синглтонед, используя вашу текущую реализацию, выдается IntegrityError.
Если клиент с таким именем уже существует, верните этот экземпляр Customer. В противном случае верните новый экземпляр Customer.
Кажется, что SqlAlchemy, независимо от того, существует ли клиент уже или нет, пытается выполнить оператор SQL-вставки в таблицу Customer.
Возможно, мои каскады установлены неправильно?