使用 sqlalchemy 在 python3 中解析 hstore

parsing hstore in python3 using sqlalchemy

我有一个 csv 文件,其中一列是以 hstore 格式编写的。我想将它转换成 python 字典,但同时保持我的代码干燥。我的代码库使用 sqlalchemy,它在 https://github.com/sqlalchemy/sqlalchemy/blob/master/lib/sqlalchemy/dialects/postgresql/hstore.py#L390 中定义了一个 _parse_hstore 函数。我试着像这样导入它:

import sqlalchemy.dialects.postgresql.hstore as hstore

但不幸的是,上游模块 (sqlalchemy.dialects.postgresql) 使用一个对象隐藏了 hstore 模块:https://github.com/sqlalchemy/sqlalchemy/blob/master/lib/sqlalchemy/dialects/postgresql/init.py#L53

是否仍然可以以某种方式导入模块?我不希望将功能代码直接复制到我的代码库中,即使功能相对简单。

您可以尝试使用函数 HSTORE.result_processor (from sqlalchemy.dialects.postgresql import HSTORE),它是私有 _parse_hstore 函数的包装器。

>>> h = sqlalchemy.dialects.postgresql.HSTORE()
>>> f = h.result_processor(None, None)
>>> f('"a"=>"1"')
{'a': '1'}

片段归功于 @lbolla