SQL-запрос выбирает только первый результат

Я хочу получить все идентификаторы песен, связанные с введенным мной ID пользователя, но он печатает только первый результат.

база данных: SQL-запрос выбирает только первый результат

Мой код:

enter = raw_input('Enter UserID: ')
cursor = MusicData.cursor()
sql = "SELECT * FROM (SELECT songID FROM train WHERE userID=? )"
result = cursor.execute(sql,(enter,))
print result.fetchall()[0][0],
Enter UserID: 3a613180775197cd08c154abe4e3f67af238a632
SODOZXB12A8C13CD55

Ваш подзапрос SELECT * выглядит ненужным, но в любом случае вам следует проверить свои данные, потому что, похоже, с этим пользователем связана только одна песня.

Tim Biegeleisen 06.04.2019 12:26

Fetchall получает все совпавшие песни. Вы печатаете только первый из них. Попробуйте распечатать вывод fetchall

rdas 06.04.2019 12:28
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
2
1 346
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Вы показываете только первый столбец первых строк из-за [0][0] после этой строки print result.fetchall()[0][0]

Добавьте «LIMIT NN» в свой запрос SQL. Это ограничит вывод количеством строк NN:

sql = "SELECT * FROM Table LIMIT 5"

Даст вам только 5 рядов.

в БД MS SQL это должно быть ключевое слово "TOP":

sql = "SELECT TOP 5 * FROM Table"

Я исправил это, добавив цикл fetchall().

rows = result.fetchall()
for row in rows:
    print row
Ответ принят как подходящий

Проблема с вашим оператором печати. Прямо сейчас, предоставляя print result.fetchall()[0][0], вы просите python напечатать один элемент. Использовать

for item in result.fetchall():
    print item

Другие вопросы по теме