Python SQLAlchemy在MSSQL中声明XML的自定义UserDefinedType

Python SQLAlchemy在MSSQL中声明XML的自定义UserDefinedType,python,sql-server,sqlalchemy,Python,Sql Server,Sqlalchemy,我正试图声明一个自定义类型“XMLType”,用于MSSQL。但是我一直得到“AttributeError:module”app.db.XMLType“没有属性”\u set\u parent\u和\u dispatch'。在我的XMLType类文件中,我没有看到任何未正确声明的内容 import sqlalchemy.types as types from lxml import etree class XMLType(types.UserDefinedType): def ge

我正试图声明一个自定义类型“XMLType”,用于MSSQL。但是我一直得到
“AttributeError:module”app.db.XMLType“没有属性”\u set\u parent\u和\u dispatch'
。在我的XMLType类文件中,我没有看到任何未正确声明的内容

import sqlalchemy.types as types

from lxml import etree

class XMLType(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

我基于和的代码。

因此我的导入碰巧有问题。对于我的模型,我最初有以下内容:

from sqlalchemy import Column, Integer, String, DateTime
from sqlalchemy.ext.declarative import declarative_base
import conductor.db.XMLType as XML

Base = declarative_base()

class Raw_data_records(Base):
    __tablename__ = 'raw_data_records'

    id = Column('id', Integer, primary_key=True, autoincrement=True)
    basename = Column('basename', String)
    filename = Column('filename', String)
    file_size = Column('file_size', Integer)
    machine = Column('machine', String)
    insert_timestamp = Column('insert_timestamp', DateTime)
    raw_xml = Column('raw_xml', XML)
然后,我将导入更改为:

从spcconductor.db.XMLType导入XMLType
raw\u xml=Column('raw\u xml',xml)
raw\u xml=Column('raw\u xml',XMLType)
,它工作了

对于需要该信息的任何人,这是XMLType.py(我没有测试过它…):

请提供a)完整的回溯b)适当的最小、完整和可验证的示例。出现错误时,您在何处以及如何使用自定义类型?
import sqlalchemy.types as types

from lxml import etree

class XMLType(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