Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 22, 2014 23:24:33

moridin777
Зарегистрирован: 2014-12-22
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

sqlite3 NoneType

Добрый день.
Недавно стал изучать python 3.3.2.
Пробую работать с базой sqlite3, для примера создал таблицу (столбцы integer и TEXT, наименование i и t соответсвтенно), при попытке прочесть данные, данные читаються, при попытке передать их переменной, вместо integer получаю none, при проверки типа: <class ‘NoneType’>
код:

terabayt
import sqlite3
x=0
y=0
con=sqlite3.connect(“testdb.db”)
cur=con.cursor()
cur.execute(“select i from t7 where i=3”)
print(cur.fetchone())
x=type(cur.fetchone())
y=cur.fetchone()
print(x)
print(y)
cur.close()
con.close()
текст выполнения:
(3,)
<class ‘NoneType’>
None

Читал, что для python в sqllite3 нужно в запросе указывать тип, или приобразоывать, подскажите какую ошибку я допустил?
Буду очень благодарен.

Отредактировано moridin777 (Дек. 23, 2014 15:53:02)

Офлайн

#2 Дек. 22, 2014 23:57:11

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

sqlite3 NoneType

moridin777
подскажите какую ошибку я допустил?
не правильно вставили код на форуме)

бд скиньте



————————————————
-*- Simple is better than complex -*-

Офлайн

#3 Дек. 23, 2014 07:34:36

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

sqlite3 NoneType

fetchone()
Fetches the next row of a query result set, returning a single sequence, or None when no more data is available.

Офлайн

#4 Дек. 23, 2014 15:51:41

moridin777
Зарегистрирован: 2014-12-22
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

sqlite3 NoneType

Shaman
fetchone()
Fetches the next row of a query result set, returning a single sequence, or None when no more data is available.

None when no more data is available, но ведь когда вывожу print(cur.fetchone()) получаю данные: (3,).
Добавил для теста в базу еще один набор значений:
3|multiply
4|test2

Запрос исправил (cur.execute(“select i from t7 where i=3”)) на (cur.execute(“select i from t7 where i>2”)).
все равно сообщение тоже, даже если он смотрит на следующий элемент в последовательности.

Офлайн

#5 Дек. 23, 2014 16:00:02

moridin777
Зарегистрирован: 2014-12-22
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

sqlite3 NoneType

Прикладываю файл с БД.
Таблица с наименованием “t7”.

Прикреплённый файлы:
attachment testdb.zip (355 байт)

Офлайн

#6 Дек. 23, 2014 18:34:16

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

sqlite3 NoneType

import sqlite3
x=0
y=0
con=sqlite3.connect("testdb.db")
cur=con.cursor()
cur.execute("select i from t7 where i>2")
a = cur.fetchone()
print(a)
print(type(a))
print cur.fetchone()
cur.execute("select i from t7 where i>2")
print cur.fetchall()
cur.close()
con.close()
(3,)
<type 'tuple'>
(4,)
[(3,), (4,)]
fetchone при каждом вызове возвращает одну запись, а потом перемещает указатель! по аналогии как readline()



————————————————
-*- Simple is better than complex -*-

Отредактировано terabayt (Дек. 23, 2014 18:34:33)

Офлайн

#7 Дек. 23, 2014 19:40:52

moridin777
Зарегистрирован: 2014-12-22
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

sqlite3 NoneType

terabayt
fetchone при каждом вызове возвращает одну запись, а потом перемещает указатель! по аналогии как readline()
Спасибо! Очень помогли

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version