SQLite нет возвращаемого типа в Python - PullRequest
0 голосов
/ 11 августа 2011

Я пытаюсь найти способ узнать, было ли возвращено какое-либо значение из запроса SQLite при использовании python.

conn = sqlite3.connect('/path/to/database.db')
cursor=conn.cursor()
t=(value,)
cursor.execute("select field from table where other_field = ?", t)
returnObject = cursor.fetchone()[0]

Если таблица содержит совпадающее значение, оно будет сохраненов returnObject.

Проблема возникает в том случае, если в базе данных нет записей, соответствующих запросу.В этом случае я получаю exceptions.TypeError: unsubscriptable object

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

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

1 Ответ

6 голосов
/ 11 августа 2011

У вас есть пара вариантов, в зависимости от ваших предпочтений.

Опция 1 : проверьте значение returnObject перед его использованием.

conn = sqlite3.connect('/path/to/database.db')
cursor=conn.cursor()
t=(value,)
cursor.execute("select field from table where other_field = ?", t)
returnObject = cursor.fetchone()
if returnObject:
    print returnObject[0]
else:
    print "Nothing found!"

Вариант 2: использовать возвращаемое значение execute().Содержит количество строк в результате.

conn = sqlite3.connect('/path/to/database.db')
cursor=conn.cursor()
t=(value,)
rowCount = cursor.execute("select field from table where other_field = ?", t)
if rowCount > 0:
   returnObject = cursor.fetchone()[0]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...