Хранение tgz в couchdb с питоном
Я пытаюсь прочитать файл tgz и записать его в couchdb.
вот код
import couchdb
conn = couchdb.Server('http://localhost:5984')
db = conn['test']
with open('/tmp/test.txt.tgz.enc') as f:
data = f.read()
doc = {'file': data}
db.save(doc)
это терпит неудачу с
Traceback (most recent call last):
File "<stdin>", line 4, in <module>
File "/usr/local/lib/python2.7/dist-packages/couchdb/client.py", line 407, in save
_, _, data = func(body=doc, **options)
File "/usr/local/lib/python2.7/dist-packages/couchdb/http.py", line 399, in post_json
status, headers, data = self.post(*a, **k)
File "/usr/local/lib/python2.7/dist-packages/couchdb/http.py", line 381, in post
**params)
File "/usr/local/lib/python2.7/dist-packages/couchdb/http.py", line 419, in _request
credentials=self.credentials)
File "/usr/local/lib/python2.7/dist-packages/couchdb/http.py", line 176, in request
body = json.encode(body).encode('utf-8')
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe3 in position 11: ordinal not in range(128)
все еще гуглял, чтобы найти решение сам.
2 ответа
Хорошо, я решил это. Дважды проверил документацию, и есть функция put_attachment, но для этого требуется, чтобы документ был создан заранее, для которого вы назначите вложение.
Пример кода, если кому-то еще это нужно:
import couchdb
conn = couchdb.Server('http://localhost:5984')
db = conn['test1']
doc = {'name': 'testfile'}
db.save(doc)
db.put_attachment(doc, data, filename="test.txt.tgz")
k i получил его. См. пример ниже. db=couch.create('test1')- это для создания имени базы данных с test1.doc={'name':'testfile'} -Это значение ключа pair.f=open('/home/yamunapriya/pythonpractices/addd.py','r')- Это открыть файл в режиме чтения.db.save(doc)- сохранить файл couchdb.db.put_attachment(doc,f,filename="/home/yamunapriya/pythonpractices/addd.py") - в этой паре ключ-значение параметра doc,f-filename/path с режимом чтения / записи, filename
import couchdb
couch=couchdb.Server()
db=couch.create('test1')
doc={'name':'testfile'}
f=open('/home/yamunapriya/pythonpractices/addd.py','r')
db.save(doc)
db.put_attachment(doc,f,filename="/home/yamunapriya/pythonpractices/addd.py")