From: José Duarte Date: Thu, 13 Jan 2022 21:33:31 +0000 (+0000) Subject: implement UUID roundtrip X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cf6fe73265342d7884a940c4b3a34c9552113ec3;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git implement UUID roundtrip --- diff --git a/lib/sqlalchemy/dialects/postgresql/base.py b/lib/sqlalchemy/dialects/postgresql/base.py index 3a055429ed..4f3e297ef5 100644 --- a/lib/sqlalchemy/dialects/postgresql/base.py +++ b/lib/sqlalchemy/dialects/postgresql/base.py @@ -1751,12 +1751,22 @@ class UUID(sqltypes.TypeEngine): return None def literal_processor(self, dialect): - bp = self.bind_processor(dialect) + if self.as_uuid: + + def process(value): + if value is not None: + value = "'%s'::UUID" % value + return value + + return process + else: - def process(value): - return "'%s'" % bp(value) + def process(value): + if value is not None: + value = "'%s'" % value + return value - return process + return process PGUuid = UUID diff --git a/test/dialect/postgresql/test_types.py b/test/dialect/postgresql/test_types.py index e3dd4ae5c8..991b0ed9d4 100644 --- a/test/dialect/postgresql/test_types.py +++ b/test/dialect/postgresql/test_types.py @@ -2793,40 +2793,27 @@ class UUIDTest(fixtures.TestBase): "not_as_uuid", postgresql.UUID(as_uuid=False), str(uuid.uuid4()), - str(uuid.uuid4()), ), ( "as_uuid", postgresql.UUID(as_uuid=True), uuid.uuid4(), - uuid.uuid4(), ), - id_="iaaa", - argnames="datatype, value1, value2", + id_="iaa", + argnames="datatype, value1", ) - def test_uuid_literal(self, datatype, value1, value2, connection): + def test_uuid_literal(self, datatype, value1, connection): v1 = connection.execute( select( bindparam( - "uuid_literal", - literal_execute=True, - type_=datatype, - ) - ), - uuid_literal=value1, - ).first() - v2 = connection.execute( - select( - bindparam( - "uuid_literal", + "key", + value=value1, literal_execute=True, type_=datatype, ) ), - uuid_literal=value2, - ).first() - eq_(v1, value1) - eq_(v2, value2) + ) + eq_(v1.fetchone()[0], value1) class HStoreTest(AssertsCompiledSQL, fixtures.TestBase):