Я ищу Arround для подготовленных заявлений в Jython с JDBC (zxJDBC)/SQLite. Все я нахожу примеры, как это (book, Jython documentation):JDBC в 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
, к сожалению, я могу Не найти примеры того, как использовать выполнение, и документация отсутствует.
PyStatement.execute(cursor, params, bindings)
Не могли бы вы объяснить мне, что params
для и если мое предположение, как использовать bindings
правильно. Мое лучшее предположение для параметров было бы в том, что они являются первым параметром метода setInt
-Method (или тому подобного) Javas Javascript, и это было бы удивительно. Я ожидал, что Jython будет более коротким, и для этого просто ожидать параметры в правильном (спереди назад) порядке.
Bonus: Есть ли способ оплаты? (Кроме подведении курсора)
Не ответ (потому что я не знаю jython), но первый вызов, вероятно, просто подготавливает оператор, связывает параметры и выполняет запрос за один раз. подготовленные операторы не только выполняют несколько похожих запросов. Также полезно, чтобы драйвер правильно удалил параметры и предотвратил атаки SQL-инъекций. –
не ответ, так как мне нужен второй случай (несколько раз тот же запрос), но проницательный, не менее – ted