2013-12-03 3 views
4

Я пытаюсь сохранить ipaddress в таблице. Созданный пользовательский тип следующим образом:Создание пользовательских типов sqlalchemy

class MCastIP(sqlalchemy.types.TypeDecorator): 
    impl = sqlalchemy.types.Integer 
    def process_bind_param(self, value, dialect): 
    return int(IPAddress(value)) 
    def process_result_value(self, value, dialect): 
    return IPAddress(value) 

Это, кажется, работает хорошо, но просто интересно, если я должен реализовать любую другую функцию, чтобы быть полным. Например: python_type. Нужно ли следующее? Когда это будет вызвано и как я могу явно позвонить и проверить, работает ли это?

def python_type(self): 
    return IPAddress 

ответ

-1

В нормальном использовании нет, у вас есть реализация. У меня есть несколько реализаций с пользовательскими типами и только когда-либо определял методы, которые мне нужны »(обычно то, что вы там используете).

В examples provided by the documentation он никогда не был реализован.

Я признаюсь, что не знаю, при каких обстоятельствах (если таковые имеются) он используется библиотекой изначально, но мне еще предстоит столкнуться с проблемой из-за ее невыполнения. Я не мог найти никакого использования метода в источнике SQLAlchemy (внешние объявления), и подозреваю, что он просто на месте для интроспекции/поисковых целей.

+0

Есть ли там новичок, чтобы объяснить, что делают эти два метода? Что это за парам? И в чем ценность результата? Я пытаюсь создать тип времени. Благодарю. –

+0

Я купил существенную алхимию SQL 2-го издания, но к таким продвинутым темам, к сожалению, не касается. –

Смежные вопросы