Size: a a a

2020 December 05

SK

Sergio Keler in SPb Python
Таблица типа user_id, attribute
Поиск по user_id даст список значений атрибута
источник

DS

David Shiko in SPb Python
Roman Mindlin
Да сделайте проще. столбец skills, в нем например стулья=1, столы=2, шкафы=4. Тогда столы и стулья это будет 3, стулья и шкафы будет 5, все вместе будет 7. И так же поиск по целочисленному индексу
Интересная мысль, попробую ее, на первый взгляд условие удовлетворено, не нужно писать sql запрос под каждый вариант
источник

SK

Sergio Keler in SPb Python
David Shiko
Интересная мысль, попробую ее, на первый взгляд условие удовлетворено, не нужно писать sql запрос под каждый вариант
where поле in (список)
То же самое, но читабельно.
Список можно снаружи дать, это значения через запятую ;)
источник

DS

David Shiko in SPb Python
Sergio Keler
where поле in (список)
То же самое, но читабельно.
Список можно снаружи дать, это значения через запятую ;)
И да и нет.
Я изначально так сделал и у меня была ошибка, туда нужно 3 параметра подставлять, а я подставлял только 2, соответственно нужна ветка if и запрос не универсальный
if var == 'any:
   WHERE IN ('male', 'female', 'any')
else:
   WHERE IN ('male', 'male', 'any')  # Еще вариант с female есть
источник

SK

Sergio Keler in SPb Python
David Shiko
И да и нет.
Я изначально так сделал и у меня была ошибка, туда нужно 3 параметра подставлять, а я подставлял только 2, соответственно нужна ветка if и запрос не универсальный
if var == 'any:
   WHERE IN ('male', 'female', 'any')
else:
   WHERE IN ('male', 'male', 'any')  # Еще вариант с female есть
зачем any?
зачем if?

where sex in ('м', 'ж') подразумевает как раз any, то есть, годится и м и ж.
в питончике ты можешь сделать "'"+"','".join(список_значений)+"'" и подставить в ( )
наверное, есть в такое готовое в execute, я не интересовался этим.
источник

SK

Sergio Keler in SPb Python
да, можно, только не список, а кортеж
# using psycopg2
data=('UK','France')
sql='SELECT * from countries WHERE country IN %s'
cur.execute(sql,(data,))
источник

SK

Sergio Keler in SPb Python
Список тоже можно, кстати, тк есть  tuple(список)
источник

DS

David Shiko in SPb Python
Sergio Keler
зачем any?
зачем if?

where sex in ('м', 'ж') подразумевает как раз any, то есть, годится и м и ж.
в питончике ты можешь сделать "'"+"','".join(список_значений)+"'" и подставить в ( )
наверное, есть в такое готовое в execute, я не интересовался этим.
Хмм, про tuple не знал, точно работает? на моей памяти у mysql такое не канает.
Так UK/FRANCE может варьироваться в моей случае, это от юзера приходит
источник

SK

Sergio Keler in SPb Python
так что, твой вариант:

sql = "select from таблица where атрибут in %s"
data = tuple(получить_список_значений(что-то-про-усера))
cursor.execute(sql,(data,))
источник

SK

Sergio Keler in SPb Python
David Shiko
Хмм, про tuple не знал, точно работает? на моей памяти у mysql такое не канает.
Так UK/FRANCE может варьироваться в моей случае, это от юзера приходит
в постгресе работает.
data - это список значений. IN - это тру, когда подходит любое из них.
источник

DS

David Shiko in SPb Python
Sergio Keler
в постгресе работает.
data - это список значений. IN - это тру, когда подходит любое из них.
Я это все понимаю, ну так выбирать из ('male', 'female', 'any') решает пользователь, т.е. может он не хочет всех
источник

SK

Sergio Keler in SPb Python
list_to_check = ['A', 'B']
cursor.execute("DELETE FROM foo.bar WHERE baz IN ({})".format(str(list_to_check)[1:-1])


для мускля
источник

SK

Sergio Keler in SPb Python
str(tuple(список)) даст нужную конструкцию со скобками
источник

SK

Sergio Keler in SPb Python
David Shiko
Я это все понимаю, ну так выбирать из ('male', 'female', 'any') решает пользователь, т.е. может он не хочет всех
етить!

НЕ НАДО ANY!
источник

SK

Sergio Keler in SPb Python
Короче, ты или не можешь сформулировать задачу или не понимаешь, что тебе надо или не понимаешь, что тебе говорят. :D
источник

SK

Sergio Keler in SPb Python
Ну, почитай про sql и там про оператор IN что ли...
источник

DS

David Shiko in SPb Python
Sergio Keler
етить!

НЕ НАДО ANY!
'any' это просто имя, если человек хочет любой из вариантов
источник

SK

Sergio Keler in SPb Python
David Shiko
'any' это просто имя, если человек хочет любой из вариантов
а ты не человек. ты программист. ты можешь любой ввод усера перевести в нужный формат.
источник

SK

Sergio Keler in SPb Python
например
if усерский_ввод == 'any:
 data = ('м', 'ж')
источник

SK

Sergio Keler in SPb Python
я гадать не могу ни что у тебя в голове ни что за код у тебя там
источник