2017-02-14 2 views
-1

Как я могу запросить в python, где условие равно значению ieruser = (заданный идентификатор пользователя) и где значение NOT IN (данный список фильмов ids) результат.Python, SQlite3 - Условие запроса равно, а не в (множественном)

Это то, что я в настоящее время

placeholder = '?' # For SQLite. See DBAPI paramstyle. 
placeholders = ', '.join(placeholder * len(l)) 

query = 'SELECT r.user, r.movie, r.rating, m.title FROM ratings r JOIN movies m ON (r.movie = m.id) ' \ 
'WHERE r.user = 405 AND r.rating >= 3 AND r.movie NOT IN (%s)' % placeholders 

cursor.execute(query, ('405', l)) 
movies_table = cursor.fetchall() 

л ссылается на массив значений, т.е. таким образом я могу получить результирующий набор, где идентификатор фильма нет в списке значений.

Большое спасибо,

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

ответ

1

Необходимо позвонить по телефону cursor.execute() с номером item per-placeholder.

попробовать что-то вроде этого:

cursor.execute(query, tuple(l)) 

Если вы хотите добавить в 405 в список значений, то вы можете сделать что-то вроде:

cursor.execute(query, (405, *l)) 
+0

Спасибо за ответ! Вы имеете в виду как с другим заполнителем, то есть после пользователя, поэтому я могу иметь условие где user = {n} и r.movie не в {list} 'WHERE r.user = (% s) '% user + 'AND r.rating> = 3 И r.movie NOT IN (% s)'% заполнителей ' Спасибо! –

+0

Вам нужно убедиться, что кортеж, который вы передаете 'execute', имеет то же количество значений, что и заполнители (и находятся в правильном порядке). Если вы хотите использовать местозаполнитель для 'user' и' movie', вы можете попробовать использовать '(405, * l)'. –

+1

Еще раз спасибо, заставило меня искать дальше. В настоящее время я использую Python 2.7, и мне удалось выяснить, и, как вы сказали, передаете одинаковое количество значений взамен в правильном порядке. Я смог вставить идентификатор пользователя в начале списка l, который теперь работает нормально. Кажется, именно так оно и работает, поскольку оно зависит от того же количества значений и в правильном порядке. –