Использование SQL - IN в Python - PullRequest
2 голосов
/ 27 июня 2011

У меня есть список идентификаторов в Python.Например:

x = [1,2,3,4,5,6]

И я хочу выбрать список записей в моей (mysql) базе данных при условии, что идентификаторы этих записей в x.что-то вроде ниже:

SELECT * FROM mytable WHERE id IN x

но я не знаю, кто я могу сделать это в Python.Я видел несколько примеров использования% s в своей строке sql.Однако это не работает, когда переменная является списком.Кто-нибудь знает, как я могу это сделать?Спасибо

Ответы [ 2 ]

3 голосов
/ 27 июня 2011

Попробуйте что-то вроде этого:

'(%s)' % ','.join(map(str,x))

Это даст вам строку, которую вы можете использовать для отправки в MySql в качестве действительного предложения IN:

(1,2,3,4,5,6)
1 голос
/ 27 июня 2011

Что ж, если известно, что все они являются номерами с хорошей репутацией, вы можете просто позвонить

"SELECT * FROM mytable WHERE ID IN ({0})".format(','.join(x))

Если вы знаете, что это числа, но любой из них может был от пользователя, тогда я мог бы использовать:

"SELECT * FROM mytable WHERE ID IN ({0})".format(','.join(list(map(int,x))))

format выполнит замену по соответствующему индексу.Объединение используется, чтобы у вас не было [].list преобразует все в список, map применяет функцию к списку / кортежу / итерируемому.В Python 3, однако, карта возвращает генератор, который вам не нужен.Вам нужен список.Итак, list (map (x, y)) вернет форму списка map (x, y).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...