pymongoを使用すると、ñやéなどの特殊文字を含む挿入を処理できません。コードを追加すると、Pythonスクリプトを呼び出すとエラーが発生します
# -*- coding: utf-8 -*-
import sys
import pymongo
import codecs
UTF8Writer = codecs.getwriter('utf8')
sys.stdout = UTF8Writer(sys.stdout)
class item(object):
def __init__(self, categoria, nombre, cantidad, foto, comentario):
self.categoria = categoria
self.nombre = nombre
self.cantidad = cantidad
self.foto = foto
self.comentario = comentario
def getItem(self):
return {'categoria':self.categoria,
'nombre':self.nombre,
'cantidad':self.cantidad,
'foto':self.foto,
'comentario':self.comentario}
def main():
mongodb_uri = 'mongodb://localhost:27017'
db_name = 'inventario'
try:
connection = pymongo.Connection(mongodb_uri)
database = connection[db_name]
except:
print('Error: Unable to connect to database.')
connection = None
if connection is not None:
continuar = True
while continuar:
categoria = raw_input('Categoria: ')
nombre = raw_input('Nombre: ')
cantidad = raw_input('Cantidad: ')
foto = raw_input('Foto: ')
comentario = raw_input('Comentario: ')
a = item(categoria, nombre, cantidad, foto, comentario)
#print a.getItem()
database.equipo.insert(a.getItem())
c = str((raw_input('Otro objeto S/N: ').lower()))
if c == 'n':
continuar = False
main()
C:\Users\felipillo\Documents\GitHub\Inventario>python inventario.py
Categoria: Biología
Nombre: Modelo Riñón
Cantidad: 2
Foto:
Comentario:
Traceback (most recent call last):
File "inventario.py", line 49, in <module>
main()
File "inventario.py", line 45, in main
database.equipo.insert(a.getItem())
File "C:\Python27\lib\site-packages\pymongo-2.4.1-py2.7-win32.egg\pymongo\coll
ection.py", line 359, in insert
bson.errors.InvalidStringData: strings in documents must be valid UTF-8
C:\ Users \ felipillo \ Documents \ GitHub \ Inventory>