Невозможно использовать значение элемента в базе данных SQL - PullRequest
0 голосов
/ 24 декабря 2018

У меня есть этот пример базы данных sql.Я хочу использовать определенный элемент из базы данных в математических вычислениях, но не могу, потому что значение выглядит следующим образом: (25,0,) вместо 25,0.Пожалуйста, смотрите прикрепленное изображение https://imgur.com/a/j7JOZ5H

import sqlite3
#Create the database:
connection = sqlite3.connect('DataBase.db')
c = connection.cursor()
c.execute('CREATE TABLE IF NOT EXISTS table1 (name TEXT,age NUMBER)')
c.execute("INSERT INTO table1 VALUES('Jhon',25)")
#Pull out the value:
c.execute('SELECT age FROM table1')
data =c.fetchall()
print(data[0])
#simple math calculation:
r=data[0]+1
print(r)

Ответы [ 2 ]

0 голосов
/ 24 декабря 2018

Согласно Python PEP 249 , спецификация для большинства DB-API, включая sqlite3, fetchall, возвращает последовательность последовательностей, обычно список кортежей.Поэтому, чтобы извлечь одно значение в первом столбце для выполнения арифметики, индексируйте возвращаемый результат дважды: для конкретной строки, а затем для конкретной позиции в строке.

data = c.fetchall()
data[0][0]

В качестве альтернативы, fetchone возвращаетодна строка, первая или следующая строка в наборе результатов, поэтому просто индексируйте один раз: положение в одной строке.

data = c.fetchone()
data[0]
0 голосов
/ 24 декабря 2018

Возвращенные данные из fetchall всегда возвращаются в виде списка кортежей, даже если кортеж содержит только 1 значение.Ваша data переменная должна быть:

[(25,)]

Вам необходимо использовать:

print(data[0][0])
r = data[0][0] + 1
print(r)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...