使用 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。
我有一个 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。