Уведомления

Группа в Telegram: @pythonsu

#1 Июль 11, 2008 13:25:30

ingvar
От:
Зарегистрирован: 2008-04-04
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

SQLAlchemy lower\upper

Подскажите, плиз, есть ли в алхимии функции lower/upper?

Надо в фильтр сделать условие выборки: текстовое поле эквивалентно тексту не зависимо от регистра, т.е. к примеру приводить перед сравнением поле в нижний регистр и сравнивать с текстом в нижнем регистре.

Мешать sql и привязываться к конкретной СУБД очень бы не хотелось.



Офлайн

#2 Июль 11, 2008 13:32:49

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

SQLAlchemy lower\upper

lower/upper - это же методы которые есть у всех cтрок в python.

Офлайн

#3 Июль 11, 2008 13:40:33

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

SQLAlchemy lower\upper

Сравнивание текста без учета регистра - задача СУБД.
Попробуй использовать sqlalchemy.func.lower/lowercase/lcase. Я SQL не очень хорошо знаю и не могу наверняка сказать как выглядит эта функция. Возможно в разных СУБД имена будут варьироваться.

..bw



Офлайн

#4 Июль 11, 2008 18:09:37

ingvar
От:
Зарегистрирован: 2008-04-04
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

SQLAlchemy lower\upper

bw
Сравнивание текста без учета регистра - задача СУБД.
Попробуй использовать sqlalchemy.func.lower/lowercase/lcase. Я SQL не очень хорошо знаю и не могу наверняка сказать как выглядит эта функция. Возможно в разных СУБД имена будут варьироваться.

..bw
Этт понятно, но в итоге sqlalchemy преобразует query в sql

sqlalchemy.func.lower/lowercase/lcase - к сожалению уникального метода нет(прийдется SQLить), хотя ОЧЕНЬ СТРАННО, что такое преобразование не реализованно,

ЗЫ: SQL-прогю уже 10 лет, хотел перейти на ООП для академического интереса…видать сколько прослоек не создавай…тут даже элементарные функции в выборке не реализованны :(

ЗЫЫ: ППЦ, нет в жизни счастья ООП, http://markmail.org/message/mwgpsmvd52bdexqo, походу надо забыть о кросс-платформенности SQLAlchemy в питоне и прогить словарями-выборками-SQL :(((



Отредактировано (Июль 11, 2008 18:28:11)

Офлайн

#5 Июль 11, 2008 19:29:48

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

SQLAlchemy lower\upper

> sqlalchemy.func.lower/lowercase/lcase - к сожалению уникального метода нет(прийдется SQLить), хотя ОЧЕНЬ СТРАННО, что такое преобразование не реализованно
Тут я не понял чего нет. func генерирует функцию по запросу, любую, тут нет предустановленного набора:

>>> from sqlalchemy import sql
>>> sql.func.lower
<sqlalchemy.sql.expression._FunctionGenerator object at 0xb7e4242c>
>>> _()
<sqlalchemy.sql.expression._Function at 0x-481bda54; lower>
>>> str(_)
'lower()'
>>> str(sql.func.foo('bar'))
'foo(:foo_1)'
..bw



Отредактировано (Окт. 6, 2009 08:38:32)

Офлайн

#6 Июль 13, 2008 11:26:02

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

SQLAlchemy lower\upper

если используете SQLite будьте готовы еще к тому, что функции lower/upper в нем реализованы только для ASCII строк ;)



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#7 Июль 14, 2008 07:16:34

ingvar
От:
Зарегистрирован: 2008-04-04
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

SQLAlchemy lower\upper

bw
> sqlalchemy.func.lower/lowercase/lcase - к сожалению уникального метода нет(прийдется SQLить), хотя ОЧЕНЬ СТРАННО, что такое преобразование не реализованно
Тут я не понял чего нет. func
1. У каждой СУБД свой метод, надо это учитывать.

2. Кто-нибудь сталкивался с таблицами, в которых нет первичных ключей? (алхимия на них ругается и “трясет” обязательно первичный ключ)



Отредактировано (Июль 14, 2008 08:25:04)

Офлайн

#8 Июль 14, 2008 07:28:41

ingvar
От:
Зарегистрирован: 2008-04-04
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

SQLAlchemy lower\upper

PooH
если используете SQLite будьте готовы еще к тому, что функции lower/upper в нем реализованы только для ASCII строк ;)
Да, если не ошибаюсь, они текст хранили только в ASCII, но в 3-й версии они хранят все только в Unicode.



Офлайн

#9 Июль 14, 2008 19:18:16

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

SQLAlchemy lower\upper

1. Я говорил что не владею темой.
2. На сколько я знаю таблицы можно создавать без первичного ключа, проблемы возникают при определении модели (mapper). В mapper ты можешь сам указать первичный ключ для таблицы.

..bw



Офлайн

#10 Июль 15, 2008 05:06:42

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

SQLAlchemy lower\upper

ingvar
Да, если не ошибаюсь, они текст хранили только в ASCII, но в 3-й версии они хранят все только в Unicode.
Тем не менее эти методы и в 3-й версии работают только для ASCII :(



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version