Таблицы базы данных создаются правильно с помощью: < /p>
Код: Выделить всё
models.Base.metadata.create_all(self.engine)
Но создание записи с использованием объекта sqlalchemy init с ошибкой, с ошибкой, которую я не понимаю.
Код: Выделить всё
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, relationship
class Base(DeclarativeBase):
pass
class VirtualMachine(Base):
__tablename__ = "virtual_machine"
vm_id: Mapped[int] = mapped_column(primary_key=True)
object_name: Mapped[str] = mapped_column()
def __init__(self, object_name: str):
self.vm_id = 1
self.object_name = object_name
def __repr__(self):
pass
def __dict__(self):
pass
< /code>
Это не первый раз, когда я использую SQLalchemy ORM для управления базами данных, но я понятия не имею, что означает это сообщение об ошибке, пытаясь создать объект «VirtualMachine» в моих модульных тестах. < /p>
class TestVM(unittest.TestCase):
def setUp(self):
self.data = {
"object_name": "test-vm"
}
engine = sqlalchemy.create_engine(connect_str)
self.db = engine.connect()
def test_create_vm(self):
self.test_vm = VirtualMachine(**self.data)
< /code>
ошибка
traceback (самый последний вызов последний):
file "/api/tests/orm_test/vm_object_test.py", строка 51, in test_create_vm
self. VirtualMachine (** self.data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
file "", строка 4, в [b] init < /strong>
файл "/api/venv/lib64/python3.12/site-packages/sqlalchemy/orm/state.py", Line 571, в initiaze_instance
с util.safe_reraise ():
file file "/api/venv/lib64/python3.12/site-packages/sqlalchemy/util/langhelpers.py", Line 146, в exit [/b]
exc_value.with_traceback (exc_tb)
файл "/api/venv/lib64/python3.12/site-packages/sqlalchemy/orm/state.py", line 569, в initiaze_instance
manager.original_init(*Mixed=:], ** kwargs)
"/api/src/database/models.py", строка 58, в [b] init < /strong>
self.vm_id = 1
^^^^^^^^^^^^^
file "/api/venv/lib64/python3.12/site-packages/sqlalchemy/orm/attributes.py", Line 537, в set [/b]
self.set 1.
file "/api/venv/lib64/python3.12/site-packages/sqlalchemy/orm/attributes.py", строка 1272, в наборе
old = self.get (состояние, dict , passive_return_no_value) /> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ DICT < /em>:
^^^^^^^^^^^^^^^^^^^^ < /p>
typeerror: аргумент метода типа 'не является имитируемым < /p>
< /blockquote>
. Если бы UUID.UUID
Я думал, что это может быть проблем>
Подробнее здесь: https://stackoverflow.com/questions/792 ... ing-sqlalc