2017-04-10 3 views
0

MSSQLで使用するカスタムタイプの "XMLType"を宣言しようとしています。しかし、私は'AttributeError: module 'app.db.XMLType' has no attribute '_set_parent_with_dispatch''を得続けます。 XMLTypeクラスファイルで正しく宣言されていないものは表示されません。MSSQLでXMLのカスタムUserDefinedTypeを宣言するSQLAlchemy

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 

私はhttp://docs.sqlalchemy.org/en/latest/core/custom_types.html?highlight=get_col_spec#sqlalchemy.types.UserDefinedTypeUsing postgresql xml data type with sqlalchemyのオフコードを基づかています。

+0

a)のフルトレースバックb)に適切な、最小限の完全かつ検証可能な例を提供してください。エラーが発生したときに、カスタムタイプをどこでどのように使用していましたか? –

答えて

0

私のインポートに何か問題があった。私は、その後に私のインポートを変え

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) 

from spcconductor.db.XMLType import XMLTyperaw_xml = Column('raw_xml', XML)raw_xml = Column('raw_xml', XMLType)に、それは働いていた私のモデルのために私はもともと、以下の持っていました。これはXMLType.py(私はそれをテストしていません...)で情報を必要とする人のため

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 
関連する問題