我有一個Flask web應用程序正在處理。我使用ZODB和Flask-ZODB擴展。ZODB:TypeError嘗試添加對象到OOBTree
有我喜歡的DBS創建:
from ZODB.DB import DB
from ZODB.FileStorage import FileStorage
from flask.ext.zodb import BTree
import transaction
# crea los indices de los principales objetos
storage = FileStorage('myproject/database/db.fs')
conn = DB(storage)
db = conn.open().root()
for idx in ['usuarios', 'proyectos', 'informes', 'actividades', 'objetivos', 'usuarios']:
if not idx in db.keys():
db[idx] = BTree()
transaction.commit();
conn.close();
我的模型:
from flask import current_app as app
from flask.ext.zodb import Object, List, Dict
class Proyecto(Object):
"""
Representacion de un proyecto con su informacion general
y todos los informes cargados para el mismo, ordenados por numero de informe
"""
def __init__(self, nombre, lineaTrabajo, presupuesto, organizacion=None,
localizacion=None, inicio=None,
responsable=None):
self.nombre = nombre
self.organizacion = organizacion
self.localizacion = localizacion
self.inicio = inicio
self.responsable = responsable
self.lineaTrabajo = lineaTrabajo
self.presupuesto = presupuesto
self.informes = Dict()
其試圖將一個對象添加到數據庫中的問題IM:
def agregarProyecto(self, proyecto):
if not proyecto.nombre in list(self.db['proyectos'].keys()):
self.db['proyectos'][proyecto.nombre] = proyecto
我越來越此錯誤:
Traceback:
File "S:\Fuentes\workspace\Python\flaskapps\venv\lib\site-packages\flask\app.py", line 1836, in __call__
return self.wsgi_app(environ, start_response)
File "S:\Fuentes\workspace\Python\flaskapps\venv\lib\site-packages\flask\app.py", line 1820, in wsgi_app
response = self.make_response(self.handle_exception(e))
File "S:\Fuentes\workspace\Python\flaskapps\venv\lib\site-packages\flask\app.py", line 1403, in handle_exception
reraise(exc_type, exc_value, tb)
File "S:\Fuentes\workspace\Python\flaskapps\venv\lib\site-packages\flask\app.py", line 1817, in wsgi_app
response = self.full_dispatch_request()
File "S:\Fuentes\workspace\Python\flaskapps\venv\lib\site-packages\flask\app.py", line 1477, in full_dispatch_request
rv = self.handle_user_exception(e)
File "S:\Fuentes\workspace\Python\flaskapps\venv\lib\site-packages\flask\app.py", line 1381, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "S:\Fuentes\workspace\Python\flaskapps\venv\lib\site-packages\flask\app.py", line 1475, in full_dispatch_request
rv = self.dispatch_request()
File "S:\Fuentes\workspace\Python\flaskapps\venv\lib\site-packages\flask\app.py", line 1461, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "S:\Fuentes\workspace\Python\flaskapps\myproject-app\myproject\views.py", line 24, in cargarProyecto
coleccion.agregarProyecto(form.crearProyecto())
File "S:\Fuentes\workspace\Python\flaskapps\myproject-app\myproject\basedatos.py", line 27, in agregarProyecto
self.db['proyectos'][proyecto.nombre] = proyecto
TypeError: Object has default comparison
我正在做的教程顯示。我做了一個簡單的測試,而不是存儲一個對象,我存儲了一個字符串,而且工作得很好。有任何想法嗎?
究竟是什麼行是例外?你能包括完整的追溯? –
它在賦值行:self.db ['proyectos'] [proyecto.nombre] = proyecto – Sebastian