Выполнение запроса
Назначение
Подготовка и выполнение SQL-запроса.
Синтаксические правила
cursor.execute(< SQL-запрос >[,< параметры >]) < SQL-запрос > ::= символьная строка < параметры > ::= < окс >< python-элемент типа tuple > < зкс > | < опс > < python-элемент типа list > < зпс > | < офс > < python-элемент типа dict > < зфс > < окс >::= ( < зкс >::= ) < опс >::= [ < зпс >::= [ < офс >::= { < зфс >::= } < python-элемент типа tuple > ::= см. спецификацию языка программирования Python < python-элемент типа list > ::= см. спецификацию языка программирования Python < python-элемент типа dict > ::= см. спецификацию языка программирования Python
Примечание
Синтаксис SQL-запросов (в том числе параметризованных) описан в документе «СУБД ЛИНТЕР. Справочник по SQL» (см. также атрибут paramstyle класса Connection).
Описание
Ссылка на SQL-запрос сохраняется курсором. Если объект операции SQL-запроса передается снова на обработку, курсор может оптимизировать свое поведение (не выполнять повторную трансляцию SQL-запроса, а использовать его претранслированный вариант). Это наиболее эффективно для алгоритмов, в которых много раз используется одна и та же операция с привязкой различных параметров.
Привязка значений к неименованным параметрам выполняется в порядке следования значений:
-
в случае передачи параметров в виде python-элемента типа tuple:
cursor.execute("insert into PEOPLE (ID, NAME) values (?, ?)", (1, "BORIS"))
-
в случае передачи параметров в виде python-элемента типа list:
cursor.execute("insert into PEOPLE (ID, NAME) values (?, ?)", [1, "BORIS"])
В результате в обоих вариантах будет добавлена строка со значением полей:
ID=1, NAME="BORIS", BDAY= значение по умолчанию (если определено или NULL).
-
привязка значений к именованным параметрам выполняется с помощью python-элемента типа dict, например:
cursor.execute("insert into PEOPLE (ID, NAME, BDAY) values (:I, :N, :D)", {"I" : 1, "N" : "BORIS", "D" : LinPy.Date(1980, 5, 27)})
В результате будет добавлена строка со значением полей:
ID=1, NAME="BORIS", BDAY= LinPy.Date(1980, 5, 27)
Возвращаемое значение
Нет.