Я ищу подготовленные операторы в Jython с JDBC (zxJDBC) / SQLite. Все, что я нахожу, - это такие примеры (книга, документация Jython):
qry = "select continent from country where name = ?"
cursor.executemany(qry,['Austria'])
Однако я всегда понимал подготовленные операторы как способ позволить базе данных оптимизировать оператор, не зная значений, вставленных для заполнителей. Затем каждый получает дескриптор этого оператора, который был передан через оптимизатор, и может выполнять его с разными значениями, экономя усилия по оптимизации запроса, поэтому я ожидал, что следующий подход лучше:
qry = cursor.prepare("SELECT * FROM `table` WHERE `field`=? AND `field2`=?") #usually mor complex queries
qry.execute(cursor, ?, (val1, val2)??) #here is the problem
К сожалению, я не могу найти примеры использования функции execute, и отсутствует документация.
PyStatement.execute(cursor, params, bindings)
Не могли бы вы объяснить мне, для чего params
, и правильно ли я догадываюсь, как использовать bindings
. Мое лучшее предположение для params было бы, что они являются первым параметром setInt
-Method (или подобного) из Javas JDBC, что было бы довольно удивительно. Я ожидал, что Jython будет более коротким, и он будет просто ожидать, что параметры будут в правильном (спереди назад) порядке.
Бонус: есть ли способ освободить набор результатов? (Помимо закрытия курсора)