ZODB:尝试向OOBT添加对象时发生类型错误

2024-04-19 11:58:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个烧瓶网络应用程序正在工作。我正在使用带烧瓶ZODB扩展的ZODB。在

创建我的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();

我的型号:

^{pr2}$

尝试添加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

我做的和教程上说的一模一样。我做了一个简单的测试,并没有存储对象,而是存储了一个字符串,效果很好。有什么想法吗?在


Tags: inpyselfappflaskdbvenvlib