Функция SqlObject и SqlBuilder IN() со строковыми значениями
Как мой первый пост здесь, я хотел бы предупредить, что я выглядел так хорошо, как я мог в Интернете, но ничего, что решило бы это.
Я использую Python 2.7 и последнюю версию sqlobject lib.
Я сталкивался с тем, что при вызове функции IN() со списком или кортежем строк вы получите результат, который выглядит как ошибка:
from sqlobject.sqlbuilder import table, IN
t = table.MyTable
print(IN(t.s_ID, ("1", "2")))
>>> <SQLOp 34ec648L>
Хотя с целыми числами, кажется, работает лучше:
print(IN(t.s_ID, (1, 2)))
>>>> ((MyTable.s_ID) IN (1, 2))
У кого-нибудь есть идея, почему это не работает? Я думаю больше о проблеме в библиотеке, но, возможно, я что-то упустил
Заранее спасибо!
примечание: я не считаю это важным в этом случае (так как я хочу только построить запрос), но я хочу отправить этот запрос в SQL Server 2012
D. FE.
1 ответ
Похоже, оба ваших утверждения верны. Но представление 1-го (которое включает в себя строки) зависит от базы данных - это зависит от того, как строки представлены в запросах для каждой конкретной базы данных (как они цитируются, экранируются и т. Д.). Таким образом, он не может быть преобразован в строку без надлежащего db-осведомленного объекта, такого как соединение или модель - объект, который имеет sqlrepr
метод. В следующем примере __connection__
Объект является postgresql-соединением:
>>> print(__connection__.sqlrepr(IN(t.s_ID, ("1", "2")))
((MyTable.s_ID) IN ('1', '2'))