使用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:\用户\费利皮约\文件\ GitHub的\ Inventario&GT;
答案 0 :(得分:1)
你可以试试这个:
enc = sys.stdin.encoding
categoria = raw_input('Categoria: ').decode(enc)
nombre = raw_input('Nombre: ').decode(enc)
cantidad = raw_input('Cantidad: ').decode(enc)
foto = raw_input('Foto: ').decode(enc)
comentario = raw_input('Comentario: ').decode(enc)