Выполнить несколько независимых операторов в SQLAlchemy Core?

Я использую SQLAlchemy Core для запуска нескольких независимых операторов. Операторы предназначены для разделения таблиц и несвязанных. Из-за этого я не могу использовать стандартный table.insert() с несколькими словарями переданных параметров. Сейчас я делаю это:

sql_conn.execute(query1)
sql_conn.execute(query2)

Есть ли способ, которым я могу запускать их одним выстрелом, вместо того, чтобы иметь два back-and-and-ds в db? Я нахожусь на MySQL 5.7 и Python 2.7.11.

Ответ 1

Неразумно и не практично запускать сразу два запроса.

Неразумно позволять таким хакерам еще один способ делать неприятные вещи через "SQL Injection".

С другой стороны, это возможно, но не обязательно практично. Вы должны создать хранимую процедуру, содержащую любое количество связанных (или несвязанных) запросов. Затем CALL эту процедуру. Есть некоторые вещи, которые могут сделать его непрактичным:

  • Единственный способ получить данные - через конечное число скалярных аргументов.
  • Выход возвращается как несколько наборов результатов; вам нужно написать код по-другому, чтобы узнать, что произошло.

Задержка при обратном вызове ничтожна, если вы находитесь на одной машине с сервером MySQL. Его обычно можно игнорировать, даже если оба сервера находятся в одном и том же центре данных. Задержка становится важной, когда клиент и сервер разделяются на большие расстояния. Для кросс-атлантической латентности мы говорим о 100 мс. Бразилия в Китай составляет около 250 мс. (Радуйтесь, мы не живем на Юпитере.)