SQLAlchemy: проверьте наличие данных в другой таблице, прежде чем вставлять данные, чтобы не использовать внешний ключ - PullRequest
0 голосов
/ 18 июня 2019

Я работаю над новым проектом, и мы решили использовать Flask, SQLAlchemy, Mysql.Я привык к использованию внешнего ключа, однако за это время администратор базы данных сказал нам, что мы не можем использовать внешний ключ.Поэтому я хотел бы проверить, существуют ли данные в другой таблице, чтобы сохранить данные как чистые и чистые, прежде чем вставлять или обновлять данные.Я могу написать некоторый код, чтобы проверить это, но я хотел бы знать, есть ли способ проверить существование данных в SQLAlchemy или флешке, потому что любые виды API, использующие эту таблицу, всегда должны проверять наличие данных, и это будет напраснореализовать тот же код по одной причине.

Кроме того, я хочу знать, распространена ли такая ситуация (ограничено использованием внешнего ключа)

1 Ответ

0 голосов
/ 18 июня 2019

Не совсем понятно, что происходит, но я сделаю предположение.

Если этот новый проект использует полностью отдельную базу данных, то может оказаться невозможным применение внешнего ключа для таблицы в исходной базе данных. (Это не означает, что у вас не может быть столбца с соответствующим идентификатором, просто вы не можете гарантировать, что указанная строка все еще существует.) MySQL допускает внешние ключи во внешних базах данных, но Кажется, есть некоторые ограничения. Например, если базы данных находятся на разных компьютерах, это может быть недоступно. В этом случае вам понадобится второй вызов соединения с базой данных или вызов API, который будет использоваться для поиска в исходной базе данных для проверки новых данных перед добавлением ваших объектов. И прежде чем использовать этот идентификатор, вам нужно проверить, существует ли он по-прежнему, и обработать ошибку, если нет.

Но на самом деле, я думаю, вам нужно вернуться к администратору базы данных и попросить его / ее объяснить, почему это невозможно. А затем попросите этого человека предложить альтернативу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...