我正在使用Pony和Python与上述版本。 我正在尝试通过引用

问题描述 投票:0回答:0

为以下错误:

类型错误:不可用的类型:'list'

这个来自:

obj2 = cache_index.setdefault(new_id, obj) in _save_created_

这是我的代码:

from pony.orm import Database from pony.orm import db_session from pony.orm import commit from pony.orm import Required from pony.orm import show from pony.orm import Set from pony.orm import set_sql_debug from pony import orm db = Database() class Person(db.Entity): name = Required(str) age = Required(int) cars = Set('Car') class Car(db.Entity): make = Required(str) model = Required(str) owner = Required(Person) show(Person) db.bind(provider='oracle',user='myuser',password='mypassword', dsn='localhost:1521/xe') db.generate_mapping(create_tables=True) set_sql_debug(True) p1 = Person(name='John', age=20) p2 = Person(name='Mary', age=22) p3 = Person(name='Bob', age=30) c1 = Car(make='Toyota', model='Prius', owner=p2) c2 = Car(make='Ford', model='Explorer', owner=p3) commit()

我的Python版本是3.6.1,我的Oracle版本是11G Express Edition版本11.2.0.2.0-64位生产

这是完整的追溯

p1 = Person(name='John', age=20) p2 = Person(name='Mary', age=22) p3 = Person(name='Bob', age=30) c1 = Car(make='Toyota', model='Prius', owner=p2) c2 = Car(make='Ford', model='Explorer', owner=p3) commit() GET CONNECTION INSERT INTO "PERSON" ("NAME", "AGE") VALUES (:p1, :p2) RETURNING "ID" INTO :new_id {'p1':'John', 'p2':20} ROLLBACK RELEASE CONNECTION Traceback (most recent call last): File "<ipython-input-5-d37ff54adaa6>", line 6, in <module> commit() File "<string>", line 2, in commit File "C:\ProgramData\Anaconda3\lib\site-packages\pony\utils\utils.py", line 78, in cut_traceback reraise(exc_type, exc, full_tb) File "C:\ProgramData\Anaconda3\lib\site-packages\pony\utils\utils.py", line 95, in reraise try: raise exc.with_traceback(tb) File "C:\ProgramData\Anaconda3\lib\site-packages\pony\utils\utils.py", line 61, in cut_traceback try: return func(*args, **kwargs) File "C:\ProgramData\Anaconda3\lib\site-packages\pony\orm\core.py", line 337, in commit rollback_and_reraise(sys.exc_info()) File "C:\ProgramData\Anaconda3\lib\site-packages\pony\orm\core.py", line 326, in rollback_and_reraise reraise(*exc_info) File "C:\ProgramData\Anaconda3\lib\site-packages\pony\utils\utils.py", line 95, in reraise try: raise exc.with_traceback(tb) File "C:\ProgramData\Anaconda3\lib\site-packages\pony\orm\core.py", line 335, in commit cache.flush() File "C:\ProgramData\Anaconda3\lib\site-packages\pony\orm\core.py", line 1797, in flush if obj is not None: obj._save_() File "C:\ProgramData\Anaconda3\lib\site-packages\pony\orm\core.py", line 5090, in _save_ if status == 'created': obj._save_created_() File "C:\ProgramData\Anaconda3\lib\site-packages\pony\orm\core.py", line 4943, in _save_created_ obj2 = cache_index.setdefault(new_id, obj) TypeError: unhashable type: 'list'

	

看起来您已经击中了PonyOrm

中的这个错误。

该错误似乎已在上个月的某个时间固定在源存储库中,但是在我写这个答案时,此修复程序在版本中尚无。 Pony Orm的最新版本目前是2018年8月发布的0.7.6版。

错误与CX_oracle 7中的破坏变化有关,您最好的选择可能是降级到CX_oracle的版本6。 (我已经安装了6.3.1版,这可能解释了为什么我无法复制您的错误。)
	
python oracle-database cx-oracle ponyorm
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.