Уведомления

Группа в Telegram: @pythonsu

#1 Март 15, 2013 11:49:29

mrgloom
От:
Зарегистрирован: 2010-07-22
Сообщения: 93
Репутация: +  0  -
Профиль   Отправить e-mail  

тип при вставке в базу данных

s0rg
А если так?

db = sqlite3.connect(':memory:')
db.execute('create table main(id, hist)')
db.execute('insert into main values(?,?)', …)
и так
InterfaceError: Error binding parameter 1 - probably unsupported type.



___________________________________________________________________________________________
http://www.lfd.uci.edu/~gohlke/pythonlibs/
https://bitbucket.org/pypy/compatibility/wiki/Home

Отредактировано mrgloom (Март 15, 2013 11:49:41)

Офлайн

#2 Март 15, 2013 13:04:40

s0rg
От:
Зарегистрирован: 2011-06-05
Сообщения: 777
Репутация: +  25  -
Профиль   Отправить e-mail  

тип при вставке в базу данных

mrgloom
InterfaceError: Error binding parameter 1 - probably unsupported type.
Сделайте:
print hist
Что у вас там?

Офлайн

#3 Март 15, 2013 13:07:48

Loki
Зарегистрирован: 2013-03-13
Сообщения: 28
Репутация: +  4  -
Профиль   Отправить e-mail  

тип при вставке в базу данных

sqlite поддерживает динамическую типизацию, это значит если не указан тип хранимых данных для поля, то sqlite будет преобразовывать их по определленному алгоритму (одни типы данных имеют приоритет выше, другие ниже), например у INTEGER приоритет выше чем у TEXT и т.д.
mrgloom просто выполните type(hist), когда узнаете тип преобразуйте к нужному и все.

Офлайн

#4 Март 15, 2013 15:04:31

mrgloom
От:
Зарегистрирован: 2010-07-22
Сообщения: 93
Репутация: +  0  -
Профиль   Отправить e-mail  

тип при вставке в базу данных

<type ‘cv2.cv.cvhistogram’>

и к чему преобразовывать?



___________________________________________________________________________________________
http://www.lfd.uci.edu/~gohlke/pythonlibs/
https://bitbucket.org/pypy/compatibility/wiki/Home

Офлайн

#5 Март 15, 2013 15:10:50

mrgloom
От:
Зарегистрирован: 2010-07-22
Сообщения: 93
Репутация: +  0  -
Профиль   Отправить e-mail  

тип при вставке в базу данных

у нового cv2 интерфейса гистограмма вроде бы типа
<type ‘numpy.ndarray’>
но так тоже просто так не записывается в базу



___________________________________________________________________________________________
http://www.lfd.uci.edu/~gohlke/pythonlibs/
https://bitbucket.org/pypy/compatibility/wiki/Home

Офлайн

#6 Март 15, 2013 15:28:56

s0rg
От:
Зарегистрирован: 2011-06-05
Сообщения: 777
Репутация: +  25  -
Профиль   Отправить e-mail  

тип при вставке в базу данных

Для крестов можно сделать так
Проверьте в своей библиотеке такую возможность.

Офлайн

#7 Март 16, 2013 10:07:08

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

тип при вставке в базу данных

4kpt
нет, я такую СУБД не пользую=)

s0rg
теперь я вас понял, в данном случае краткость сыграла скорее негативную роль). По поводу SQLIte если он не знает в какой тип преобразовать получаемое значение, то выдаст ошибку. Ну в прочем об этом и я и ТС уже сказали.

mrgloom
blob это иногда очень хорошо. А не работало у вас скорее потому что нужно сделать base64.encodestring(data), впрочем это лишь пол пути, затем вам надо считам из БД перевести обратно в исходный тип. Как это делается в вашем случае не зннаю.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#8 Март 16, 2013 10:45:05

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

тип при вставке в базу данных

Может cv2.cv.cvhistogram или numpy.ndarray (должен) поддерживают pickle?
Сохранение:

sqlite.Binary(pickle.dumps(hist))
Загрузка:
pickle.loads(hist)

Офлайн

#9 Март 16, 2013 15:53:59

s0rg
От:
Зарегистрирован: 2011-06-05
Сообщения: 777
Репутация: +  25  -
Профиль   Отправить e-mail  

тип при вставке в базу данных

JOHN_16
в данном случае краткость сыграла скорее негативную роль
Согласен, но насколько я понял у ТС-а более прикладная задача (OpenCV как-никак) и он не очень дружит с типами данных в питоне, потому решил не ‘грузить’ его лишний раз. Так как он использует питон не как язык, который ему нужно выучить, а как инструмент с помощью которого он может решить свою задачу. Будет опыт - сам разберется, что к чему.

UPD: Кстати да - плюсую pickle

Отредактировано s0rg (Март 16, 2013 16:04:05)

Офлайн

#10 Март 18, 2013 08:06:26

mrgloom
От:
Зарегистрирован: 2010-07-22
Сообщения: 93
Репутация: +  0  -
Профиль   Отправить e-mail  

тип при вставке в базу данных


c pickle тоже не работает для cv2.cv.cvhistogram

db.execute('insert into main values(?,?)', (1, sqlite3.Binary(pickle.dumps(hist))))

Traceback (most recent call last):
File “<pyshell#13>”, line 1, in <module>
db.execute('insert into main values(?,?)', (1, sqlite3.Binary(pickle.dumps(hist))))
File “C:\Python27\lib\pickle.py”, line 1374, in dumps
Pickler(file, protocol).dump(obj)
File “C:\Python27\lib\pickle.py”, line 224, in dump
self.save(obj)
File “C:\Python27\lib\pickle.py”, line 306, in save
rv = reduce(self.proto)
File “C:\Python27\lib\copy_reg.py”, line 70, in _reduce_ex
raise TypeError, “can't pickle %s objects” % base.__name__
TypeError: can't pickle cvhistogram objects

и так тоже
db.execute('insert into main values(?,?)', (1, sqlite3.Binary(hist)))

Traceback (most recent call last):
File “<pyshell#14>”, line 1, in <module>
db.execute('insert into main values(?,?)', (1, sqlite3.Binary(hist)))
TypeError: buffer object expected



___________________________________________________________________________________________
http://www.lfd.uci.edu/~gohlke/pythonlibs/
https://bitbucket.org/pypy/compatibility/wiki/Home

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version