python - 在 sqlalchemy 中使用 postgresql xml 数据类型

标签 python xml sqlalchemy postgresql-9.2

SqlAlchemy 通过方言支持大多数数据库特定的数据类型,但我找不到任何可用于 postgresql xml 列类型的东西。有人知道可行的解决方案吗?理想情况下,它不应该需要我自己实现自定义列类型。

最佳答案

如果您需要在 postgresql 数据库中拥有原生 'xml' 数据类型,您需要编写继承自 UserDefinedType 而非 TypeDecorator 的自定义类型。 Documentation

这是我在其中一个项目中使用的:

import xml.etree.ElementTree as etree
import sqlalchemy

class XMLType(sqlalchemy.types.UserDefinedType):
    def get_col_spec(self):
        return 'XML'

    def bind_processor(self, dialect):
        def process(value):
            if value is not None:
                if isinstance(value, str):
                    return value
                else:
                    return etree.tostring(value)
            else:
                return None
        return process

    def result_processor(self, dialect, coltype):
        def process(value):
            if value is not None:
                value = etree.fromstring(value)
            return value
        return process

关于python - 在 sqlalchemy 中使用 postgresql xml 数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16153512/

相关文章:

Ruby 发送 xml 到服务器

python - 将空输入从 HTML 表单转换为 Flask 中的 None 以在 PostgreSQL 中将它们存储为 NULL

python - 在具有多索引的 pandas Dataframe 中,我如何按顺序过滤?

函数返回函数的 Python 命名约定

python - 拆分 pandas 中的地址列

java - (Node.js/Java) 如何使 XML 输出漂亮

xml - 开始和结束标记不匹配 : meta line 4 and head

python - 正则表达式提取一组单词

mysql - 在 SQL 和 sqlalchemy 中联接和添加数据

python - SQLAlchemy 和 SQL Server 日期时间字段溢出