Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Python: Общие вопросы > "вложить" любой файл в базу(проект на TurboGears)


Автор: pythonwin 16.5.2006, 13:25
Можете помочь?

Мне нужно "вложить" любой файл в базу (PostgresSQL через SQLObject)
В Zope есть такая возможность - может использовать часть кода оттуда?

P.S. 
Это нужно для проекта написанного при помощи TurboGears
основный форматы файлов которые нужно "вложить" в базу:

Код

doc, xls, jpg, gif, rtf, html, tar.gz, rar, zip, exe
 

Автор: J2A 16.5.2006, 13:37
Цитата(pythonwin @ 16.5.2006,  16:25)
Можете помочь?

Мне нужно "вложить" любой файл в базу (PostgresSQL через SQLObject)
В Zope есть такая возможность - может использовать часть кода оттуда?

ZODB -- объектная БД, PostgreSQL -- реляционная. AFAIK, PostgreSQL умеет BLOB'ы, умеет ли это SQLObject -- не знаю. Как вариант -- кодировать в base64 и сохранять как текст. 

Автор: pythonwin 16.5.2006, 14:37
Цитата

ZODB -- объектная БД, PostgreSQL -- реляционная.

Спасибо! Но я об этом уже знаю, хотя например через SQLObject в PostgreSQL можно записать почти любой объект питона(проблем пока не было).
Объявление класса
Код

class class_1(SQLObject):
    m1 = PickleCol()

создание записи:
Код

class_1(m1=obj1)

А вот obj1 может быть и списком, и стракой, и каким-нибудь объектом вашего класса.
Цитата
 AFAIK, PostgreSQL умеет BLOB'ы, умеет ли это SQLObject -- не знаю. Как вариант -- кодировать в base64 и сохранять как текст.

А подробней можете объяснить? 

Автор: J2A 16.5.2006, 20:09
Цитата(J2A)
 AFAIK, PostgreSQL умеет BLOB'ы, умеет ли это SQLObject -- не знаю.

Умеет. http://www.sqlobject.org/SQLObject.html#column-types

Цитата(J2A)
Как вариант -- кодировать в base64 и сохранять как текст.

http://docs.python.org/lib/module-base64.html

Цитата(pythonwin @ 16.5.2006,  17:37)
А подробней можете объяснить?

RTFM?

P.S. http://www.opennet.ru/openforum/vsluhforumID9/3846.html
P.P.S. Стань google certified search engineer сейчас  smile 
  

Автор: pythonwin 23.5.2006, 14:40
Проблему решил!!!

model---------

class ForFiles(SQLObject):
    ....
    file=PickleCol()

kid---------

<input type="file" name="attach_file"/>

сонтролерсы:

import cgi # а можно и из CherryPy вытащить у него тоже есть
class Root (..):
    .....

    def files(self, **kw):
         attach_file=kw['attach_file']
         ForFiles(.., file=attach_file) 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)