首页 > 解决方案 > 使用 sqlalchemy 在 python3 中解析 hstore

问题描述

我有一个 csv 文件,其中一列以 hstore 格式编写。我想将它转换为 python dict,但同时保持我的代码干燥。我的代码库使用 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

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

标签: pythonpostgresqlsqlalchemyhstore

解决方案


您可以尝试使用作为私有函数包装器的函数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


推荐阅读