Как выполняется сопоставление значения параметра при использовании параметров в сложных запросах в pyodbc? - PullRequest
0 голосов
/ 07 декабря 2018

как, скажем,

cursor.execute("select a,if(i=?,(select max(b) from tab where j=? and d in (select e from where k!=?)),10) from tabb",[10,'asasa', 'y'])

(конечно, это грязно / сложно).

Есть ли какая-то конкретная стратегия, используемая для соответствия?Можете объяснить с помощью примеров?

1 Ответ

0 голосов
/ 07 декабря 2018

Есть ли какая-то конкретная стратегия, используемая для соответствия?

Параметры pyodbc строго позиционированы.Первый элемент в списке / кортеже значений параметров соответствует заполнителю первого параметра в тексте команды SQL.Значение второго параметра соответствует заполнителю второго параметра и т. Д.

Именованные параметры напрямую не поддерживаются pyodbc, поэтому, если у вас есть значение параметра, которое используется более одного раза, вам придется

  1. повторить значение параметра в списке параметровили
  2. , если ваша база данных и драйвер ODBC поддерживают его, используйте блок анонимного кода для создания именованной переменной в коде SQL (в соответствии с правилами для используемого вами диалекта SQL), а затем используйте этопеременная в качестве параметра в вашем запросе.

Обратите внимание, что опция (2) не поддерживается MySQL / MariaDB .

...