powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Firebird + Python = bullshit
15 сообщений из 40, страница 2 из 2
Firebird + Python = bullshit
    #39240626
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JacobianОракул (цитата) "пытается определять тип параметра" как NUMBER и выдает
ошибку, если в качестве параметра передается какая-нибудь строка.
Между "определением требуемого типа параметра" и "приведением типа данных, что ему пришли,
к типу поля при непосредственном сравнении с полем" дистанция огромного размера.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Firebird + Python = bullshit
    #39240631
Jacobian
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
То есть в конструкции вида:

Код: sql
1.
2.
3.
4.
5.
CASE
WHEN ID = ? #1
THEN 'abc'
ELSE ?         #2
END



если, как вы говорите, соблюдать "дистанцию", то в первом случае Firebird просто попытается "привести" параметр к типу поля, а во втором случае попытается определить тип, например, исходя из того, что положили в THEN? А в других базах (том же Оракуле) в первом случае тоже будет просто сделано приведение типов, а во втором случае вообще никакого определения типа параметра не будет, так же как и в других вышеназванных серверах?
...
Рейтинг: 0 / 0
Firebird + Python = bullshit
    #39240634
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jacobianв конструкции вида
Ты же понимаешь, что в этой конструкции булевское выражение для проверки и выражение для
формирования результата это две совсем-совсем разные вещи?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Firebird + Python = bullshit
    #39240638
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что, кстати, умные ораклы и иже с ними вернут как результат запроса

Код: plsql
1.
SELECT CASE WHEN COL1 = COL2 THEN ? ELSE ? END AS TXT FROM TEST_TABLE



Каков будет тип результата?
...
Рейтинг: 0 / 0
Firebird + Python = bullshit
    #39240639
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpertКаков будет тип результата?
Ставлю на VARCHAR2(4000).
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Firebird + Python = bullshit
    #39240641
Jacobian
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
@IBExpert. Запрос, что я привел в самом начале - это примерно в 20 раз упрощенная версия того запроса, который запускается у меня в одном из модульных тестов. Так вот в Оракле, как и в остальных РСУБД, за исключением Firebird, все отрабатывает так, как по крайней мере ожидаешь. Конкретно твой запрос не проверял.
...
Рейтинг: 0 / 0
Firebird + Python = bullshit
    #39240642
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JacobianКонкретно твой запрос не проверял.
Вообще-то это как раз конкретно твой запрос, из-за которого ты и начал истерить:

Jacobian>>> # а теперь давайте поменяем чуток наш запрос
Код: sql
1.
2.
>>> query = "SELECT CASE WHEN 'val_1' = 'val_1' THEN ? ELSE ? END AS TXT FROM 
TEST_TABLE"


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Firebird + Python = bullshit
    #39240645
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovIBExpertКаков будет тип результата?
Ставлю на VARCHAR2(4000).

Так точно.

В PG, кстати, будет примерно так же: TEXT.
...
Рейтинг: 0 / 0
Firebird + Python = bullshit
    #39240647
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя, с Ораклом я наверное погорячился.
Из джавы работаю. Там если явно не установить значение, получишь Not all variables bound, так что все не так однозначно (с).
Да и в SQL*Plus вроде такое же наблюдалось.
...
Рейтинг: 0 / 0
Firebird + Python = bullshit
    #39240648
Jacobian
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Во-первых, я не истерил. Во-вторых

Код: sql
1.
COL1 = COL2



Это буквально не то же самое, что

Код: sql
1.
'val_1' = 'val_1'
...
Рейтинг: 0 / 0
Firebird + Python = bullshit
    #39240650
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JacobianВо-первых, я не истерил. Во-вторых
Во-первых, внимательно посмотри на сабж.
Во-вторых, сравнение не имеет значения, вся фишка в параметрах на всех ветках результата.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Firebird + Python = bullshit
    #39241714
Фотография Tonal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jacobian... в MySQL, SQLite, Postgres, Oracle и MSSQL подобная параметризация запроса работает, как и ожидаешь.
За "всю Одессу" а не скажу, то вот все драйвера Python для MySQL при параметризации просто подставляют значения в текст запроса и уже его отправляют на сервер. Т. е. с типами вовсе не парятся. :)
Что приводит к тому, что ожидаемого выигрыша в скорости при использовании запросов с параметрами ты не получишь.
Т. е. работают они не совсем "как и ожидалось". :)

Ну а в FDB можно напрямую вызвать подготовку запроса и у получившегося объекта запросить ожидаемые типы аргументов.
...
Рейтинг: 0 / 0
Firebird + Python = bullshit
    #39241723
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tonalвсе драйвера Python для MySQL при параметризации просто подставляют значения в
текст запроса
У них выбора нет. У мускуля в параметризованных запросах сидело столько багов, что проще
было считать, что их не существует в принципе.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Firebird + Python = bullshit
    #39241745
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это в каких версиях? И как сейчас?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Firebird + Python = bullshit
    #39241823
Фотография Tonal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovУ них выбора нет. У мускуля в параметризованных запросах сидело столько багов, что проще
было считать, что их не существует в принципе.
Тем не менее в PHP драйвере mysqli есть честные параметризованные запросы. Что интересно, при привязке переменных типы нужно указываются явно. :)

Вполне возможно, что опциональное явное указание типов параметров было бы полезно и python-ическому FDB, если бы его можно организовать.
...
Рейтинг: 0 / 0
15 сообщений из 40, страница 2 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Firebird + Python = bullshit
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]