Уведомления

Группа в Telegram: @pythonsu

#1 Март 14, 2013 13:28:14

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

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

def compute_histogram_rgb(src, r_bins = 32, g_bins = 32, b_bins= 32):
    #create planes
    rplane = cv.CreateImage(cv.GetSize(src), 8, 1)
    gplane = cv.CreateImage(cv.GetSize(src), 8, 1)
    bplane = cv.CreateImage(cv.GetSize(src), 8, 1)
    planes = [rplane, gplane, bplane]
    cv.Split(src, rplane, gplane, bplane, None)
    #compute histogram
    hist = cv.CreateHist((r_bins, g_bins, b_bins), cv.CV_HIST_ARRAY,
            ranges = ((0, 255),(0, 255), (0, 255)), uniform = True)
    cv.CalcHist(planes, hist)      #compute histogram
    cv.NormalizeHist(hist, 1.0)    #normalize hist
    return hist
допустим есть код считает гистограмму у изображения, хочу вставить потом эту гистограмму в базу данных sqllite, но как я понял при создании таблицы там надо указывать тип переменной, а как храниться эта гистограмма я не знаю.
как быть?



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

Офлайн

#2 Март 14, 2013 17:10:45

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

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

в sqllite типов нет - создали таблицу, записали туда данные что именно за данные это будут, ему все равно.

Отредактировано s0rg (Март 14, 2013 17:31:40)

Офлайн

#3 Март 15, 2013 00:50:27

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

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

s0rg
в SQLIte нету типов? вы точно ничего не путаете?



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

Офлайн

#4 Март 15, 2013 01:46:36

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

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

Если я не ошибаюсь, sqlite хранит все данные в виде строк, поэтому DB API выполняет дополнительные операции по преобразованию :)



Отредактировано 4kpt (Март 15, 2013 01:52:19)

Офлайн

#5 Март 15, 2013 03:19:19

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

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


4kpt
Посмотрите тут раздел “SQLite и Python типы данных” ближе к концу.

К тому же вот вам код, который говорит что SQLite работает только по нативным типам, если хочется подсунуть ему любой свой объект, его надо зарегистрировать.

>>> import sqlite3
>>> db=sqlite3.connect(':memory:')
>>> cursor=db.cursor()
>>> cursor.execute('create table main(id integer, value float, text text);')
>>> cursor.execute('insert into main values(?,?,?)', (13.5, 12, 111))
>>> cursor.execute('select * from main;').fetchall()
[(13.5, 12.0, u'111')]
>>> class b(object):
...     def __str__(self):
...         return 'just b'
...
>>> print b()
just b
>>> cursor.execute('insert into main values(?,?,?)', (10, 11.0, b() ))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
sqlite3.InterfaceError: Error binding parameter 2 - probably unsupported type.
>>>



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

Офлайн

#6 Март 15, 2013 07:56:47

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

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

ну так дело в том, что я не знаю какой тип у hist и python как бы безтиповый язык же.



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

Офлайн

#7 Март 15, 2013 08:04:51

sp3
От:
Зарегистрирован: 2010-01-12
Сообщения: 405
Репутация: +  18  -
Профиль   Отправить e-mail  

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

mrgloom
python как бы безтиповый язык же.
Что за глупость. Питон - язык с динамической типизацией.



Офлайн

#8 Март 15, 2013 08:09:07

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

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

попробовал сделать поле для hist типа blob, но всё равно не работает.

>>> import sqlite3
>>> db=sqlite3.connect(':memory:')
>>> cursor=db.cursor()
>>> cursor.execute('create table main(id integer, hist blob);')
>>> cursor.execute('insert into main values(?,?)', (13.5, hist))
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 08:09:27)

Офлайн

#9 Март 15, 2013 10:13:56

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

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

JOHN_16
Статья хорошая. Встретил про типы в книге Сузи Р… Видимо Роман ошибался :)
А по Postgresql такой статейки у Вас нет?



Офлайн

#10 Март 15, 2013 10:14:03

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

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

А если так?

db = sqlite3.connect(':memory:')
db.execute('create table main(id, hist)')
db.execute('insert into main values(?,?)', ...)

JOHN_16
Объясняю свою точку зрения - sqllite без указания типа поля сам подберет подходящий тип данных для этого поля в случае ТС-а скорее всего будет байтовая строка. Для краткости япросто написал именно так - типов данных (как-бы) нет.

Отредактировано s0rg (Март 15, 2013 10:21:04)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version