I want to use UUID v7 with this package: https://github.com/aminalaee/uuid-utils/
Here's my current code: from sqlalchemy.dialects.postgresql import UUID as POSTGRES_UUID from sqlalchemy.orm import Mapped, as_declarative, mapped_column from uuid_utils import UUID, uuid7 from db.dependencies import get_db @as_declarative() class Base: pass class Test(Base): __tablename__: str = "test" id: Mapped[UUID] = mapped_column(POSTGRES_UUID(as_uuid=True), primary_key=True, default=uuid7) a = Test() with get_db() as db: db.add(a) db.commit() which throws this error Traceback (most recent call last): File "/home/dev/.local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1965, in _exec_single_context self.dialect.do_execute( File "/home/dev/.local/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 921, in do_execute cursor.execute(statement, parameters) psycopg2.ProgrammingError: can't adapt type 'uuid_utils.UUID' The above exception was the direct cause of the following exception: Traceback (most recent call last): File "/dci-ng/test6.py", line 35, in <module> db.commit() File "/home/dev/.local/lib/python3.11/site-packages/sqlalchemy/orm/session.py", line 1923, in commit trans.commit(_to_root=True) File "<string>", line 2, in commit File "/home/dev/.local/lib/python3.11/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go ret_value = fn(self, *arg, **kw) ^^^^^^^^^^^^^^^^^^^^ File "/home/dev/.local/lib/python3.11/site-packages/sqlalchemy/orm/session.py", line 1239, in commit self._prepare_impl() File "<string>", line 2, in _prepare_impl File "/home/dev/.local/lib/python3.11/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go ret_value = fn(self, *arg, **kw) ^^^^^^^^^^^^^^^^^^^^ File "/home/dev/.local/lib/python3.11/site-packages/sqlalchemy/orm/session.py", line 1214, in _prepare_impl self.session.flush() File "/home/dev/.local/lib/python3.11/site-packages/sqlalchemy/orm/session.py", line 4179, in flush self._flush(objects) File "/home/dev/.local/lib/python3.11/site-packages/sqlalchemy/orm/session.py", line 4314, in _flush with util.safe_reraise(): File "/home/dev/.local/lib/python3.11/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__ raise exc_value.with_traceback(exc_tb) File "/home/dev/.local/lib/python3.11/site-packages/sqlalchemy/orm/session.py", line 4275, in _flush flush_context.execute() File "/home/dev/.local/lib/python3.11/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute rec.execute(self) File "/home/dev/.local/lib/python3.11/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute util.preloaded.orm_persistence.save_obj( File "/home/dev/.local/lib/python3.11/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj _emit_insert_statements( File "/home/dev/.local/lib/python3.11/site-packages/sqlalchemy/orm/persistence.py", line 1226, in _emit_insert_statements result = connection.execute( ^^^^^^^^^^^^^^^^^^^ File "/home/dev/.local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1412, in execute return meth( ^^^^^ File "/home/dev/.local/lib/python3.11/site-packages/sqlalchemy/sql/elements.py", line 516, in _execute_on_connection return connection._execute_clauseelement( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/dev/.local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1635, in _execute_clauseelement ret = self._execute_context( ^^^^^^^^^^^^^^^^^^^^^^ File "/home/dev/.local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1844, in _execute_context return self._exec_single_context( ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/dev/.local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1984, in _exec_single_context self._handle_dbapi_exception( File "/home/dev/.local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 2339, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "/home/dev/.local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1965, in _exec_single_context self.dialect.do_execute( File "/home/dev/.local/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 921, in do_execute cursor.execute(statement, parameters) sqlalchemy.exc.ProgrammingError: (psycopg2.ProgrammingError) can't adapt type 'uuid_utils.UUID' [SQL: INSERT INTO test (id) VALUES (%(id)s::UUID)] [parameters: {'id': UUID('018af275-54b2-709a-9ab2-8a7492d8ee9b')}] (Background on this error at: https://sqlalche.me/e/20/f405) I've found a workaround to import the native uuid package and set the default attribute to: lambda _: NATIVEUUID(uuid7().hex) but I wanted to ask if there's a more elegant way to do it? Thanks in advance and kind regards -- SQLAlchemy - The Python SQL Toolkit and Object Relational Mapper http://www.sqlalchemy.org/ To post example code, please provide an MCVE: Minimal, Complete, and Verifiable Example. See http://stackoverflow.com/help/mcve for a full description. --- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sqlalchemy+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/sqlalchemy/8026ee8e-461e-486e-85f0-af18415d53b7n%40googlegroups.com.