fetchone () устанавливает переменную int в кортеж - PullRequest
3 голосов
/ 07 июля 2011

У меня есть проект с Python 2.7 и SQLite3.

Я пытаюсь сохранить целочисленную переменную в столбце базы данных SQLite3, а затем позже установить переменную в значение столбца SQLite.

Соединение в порядке, столбец существует, и он имеет тип "int".

Я использую этот код для извлечения данных:

    Trailcrest.fish_score = c.execute("SELECT fish_score FROM roster WHERE agentnumber = ?;", (AN,) ).fetchone()

The "Переменная AN ", которую я вызываю, предоставляется в качестве аргумента, когда вызывается def, в котором содержится этот код.

Однако, когда я смотрю на переменную Trailcrest.fish_score, пока в нее записаны данныеэто было написано как кортеж, а не как целое число.Переменная изначально содержала целое число.

Что происходит?Как я могу это исправить?(Я предполагаю, что мне нужно провести кастинг, но я не уверен.)

1 Ответ

7 голосов
/ 07 июля 2011

fetchone() по-прежнему возвращает объект типа Row, который вам понадобится для анализа одиночного поля, поэтому вам нужно будет извлечь из него данные

row = c.execute("SELECT fish_score FROM roster WHERE agentnumber = ?;", (AN,) ).fetchone()
if row is not None:  # or just "if row"
    Trailcrest.fish_score = row[0]
else:
    pass # didn't get back a row
...