如何查询 UUID 值而不必在 HTSQL 中将它们显式转换为字符串
How do I query UUID values without having to explicitly cast them to string in HTSQL
我有一个由 UUID 字段索引的 table,使用 postgres 的 uuid-ossp
扩展,所有 运行 在 python
应用程序上。每次过滤 UUID 字段时,我都必须显式转换 uuid 字段:
htsql = HTSQL('pgsql:///my_database')
htsql.produce("/product.filter(string(id) = '00002094-b1c3-11e3-92b8-6bb3666a756f')")
如果我不投 id
我有以下错误:
htsql.produce("/product.filter(id = '00002094-b1c3-11e3-92b8-6bb3666a756f')")
Cannot coerce values of types (opaque, untyped) to a common type
While translating:
/product.filter(id = '00002094-b1c3-11e3-92b8-6bb3666a756f')
HTSQL 似乎无法识别 UUID 类型。所以我的问题是:
有没有办法告诉HTSQL如何识别UUID?我也可以在命令行界面上执行此操作吗?
通过查看 HTSQL 的源代码,我目前对这个问题的解决方案是使用它的内省 类 告诉 HTSQL 将 UUID 识别为文本:
class IntrospectPGSQLUUIDDomain(IntrospectPGSQLDomain):
call(('pg_catalog', 'uuid'))
@classmethod
def __enabled__(cls):
return True
def __call__(self):
return TextDomain()
然后告诉 HTSQL 在创建数据库连接后对其进行检查:
htsql = HTSQL('pgsql:///my_database')
with htsql:
introspect()
这解决了我在 python
应用程序上的问题,但我仍然需要找到一种在命令行上执行此操作的方法。
我有一个由 UUID 字段索引的 table,使用 postgres 的 uuid-ossp
扩展,所有 运行 在 python
应用程序上。每次过滤 UUID 字段时,我都必须显式转换 uuid 字段:
htsql = HTSQL('pgsql:///my_database')
htsql.produce("/product.filter(string(id) = '00002094-b1c3-11e3-92b8-6bb3666a756f')")
如果我不投 id
我有以下错误:
htsql.produce("/product.filter(id = '00002094-b1c3-11e3-92b8-6bb3666a756f')")
Cannot coerce values of types (opaque, untyped) to a common type
While translating:
/product.filter(id = '00002094-b1c3-11e3-92b8-6bb3666a756f')
HTSQL 似乎无法识别 UUID 类型。所以我的问题是:
有没有办法告诉HTSQL如何识别UUID?我也可以在命令行界面上执行此操作吗?
通过查看 HTSQL 的源代码,我目前对这个问题的解决方案是使用它的内省 类 告诉 HTSQL 将 UUID 识别为文本:
class IntrospectPGSQLUUIDDomain(IntrospectPGSQLDomain):
call(('pg_catalog', 'uuid'))
@classmethod
def __enabled__(cls):
return True
def __call__(self):
return TextDomain()
然后告诉 HTSQL 在创建数据库连接后对其进行检查:
htsql = HTSQL('pgsql:///my_database')
with htsql:
introspect()
这解决了我在 python
应用程序上的问题,但我仍然需要找到一种在命令行上执行此操作的方法。