Hello,
For a PostgreSQL 14 db, I defined a User mapping and helper function like
so:
from sqlalchemy.dialects.postgresql import UUID
class User(Base):
id = Column(UUID(as_uuid=True), primary_key=True,
server_default=func.gen_random_uuid())
name = Column(Unicode(128))
@staticmethod
def create(dbsession: Session, name: str, id_: uuid.UUID = None):
user = User(name=name, id=id_)
dbsession.add(user)
return user
Notice that the helper function’s id_ has a different UUID type than the
User’s mapped property. And that, in return causes this mypy
<https://mypy.readthedocs.io/> error:
error: Argument "id_" to "create" of "User" has incompatible type
"uuid.UUID"; expected "Optional[sqlalchemy.dialects.postgresql.base.UUID]"
[arg-type]
I looked into the implementation of the dialect’s UUID
<https://github.com/sqlalchemy/sqlalchemy/blob/main/lib/sqlalchemy/dialects/postgresql/base.py#L1695-L1752>
whether it implements a constructor which takes a Python UUID, but no luck.
Given that PostgreSQL supports UUIDs natively
<https://www.postgresql.org/docs/14/datatype-uuid.html>, I didn’t want to
use UUIDType
<https://sqlalchemy-utils.readthedocs.io/en/latest/data_types.html#module-sqlalchemy_utils.types.uuid>
either. So, Other that cast()
<https://docs.python.org/3/library/typing.html#typing.cast> I’m not sure
how to work with this error…
Thanks!
Jens
--
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 [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/sqlalchemy/54c50972-85be-4a86-b9bf-4daa435d939an%40googlegroups.com.