Оператор SELECT, возвращающий имя столбца вместо VALUE (для этого указанного столбца) - PullRequest
0 голосов
/ 02 июля 2019

Я пытаюсь проанализировать информацию в операторе SELECT, используя два имени столбца 'id' и 'easy_high_score', чтобы я мог манипулировать значениями этих двух столбцов в моей программе, но при попытке получить значение столбца 'easy_high_score', который должен быть целым числом вроде 46 или 20, вместо этого он возвращает строку ('easy_high_score',).

Даже несмотря на то, что в таблице нет упоминания [('easy_high_score',)], оно все равно выводит это. В таблице идентификатор 1 имеет правильные значения и информацию, которую я пытаюсь получить, но безрезультатно. Я довольно новичок в SQLite3.

if mode == "Easy":
    mode = 'easy_high_score'

if mode == "Normal":
    mode = "normal_high_score"

if mode == 'Hard':
    mode == "hard_high_score"


incrementor = 1 ##This is used in a for loop but not necessary for this post
c.execute("SELECT ? FROM players WHERE id=?", (mode, incrementor))
allPlayers = c.fetchall()
print(allPlayers)  #This is printing [('easy_high_score',)], when it should be printing an integer.

Ожидаемый результат: 20 (или целое число, представляющее высокий балл в простом режиме)

Фактический результат: [('easy_high_score',)]

1 Ответ

0 голосов
/ 02 июля 2019

Имя столбца нельзя указывать с помощью параметра, оно должно присутствовать дословно в запросе.Измените строку, которая выполняет запрос, следующим образом:

c.execute("SELECT %s FROM players WHERE id=?" % mode, (incrementor,))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...