MySQL- Руководство разработчика



              

Хитрости в реализации


  • Привилегированные объектные типы для объектов даты/времени определены в пакете mxDateTime ( http://starship.python.net/~lemburg/mxDateTime.html). Это обеспечивает все необходимые конструкторы и методы на уровнях Python и C.
  • Привилегированный объектный тип для объектов Binary является буферным типом, доступный в стандартном Python, начиная с версии 1.5.2. Подробности ищите в документации на Python и в дистрибутиве его исходников (файлы Include/bufferobject.h и Objects/bufferobject.c).
  • Имеется типовая реализация конструкторов для даты/времени, делегирующая работу универсальным конструкторам на основе Unix-импульсов сигнала времени: import time

    def DateFromTicks(ticks): return apply(Date,time.localtime(ticks)[:3])

    def TimeFromTicks(ticks): return apply(Time,time.localtime(ticks)[3:6])

    def TimestampFromTicks(ticks): return apply(Timestamp,time.localtime(ticks)[:6])

  • Этот класс Python позволяет выполнять вышеупомянутые объекты типа даже при том, что поле кода типа описания выдает много значений для type object: class DBAPITypeObject: def __init__(self,*values): self.values = values def __cmp__(self,other): if other in self.values: return 0 if other < self.values: return 1 else: return -1 Возникающий в результате объект сравнивается со всеми значениями, переданными конструктору.
  • Имеется отрывок кода на Python, который реализует иерархию исключительных ситуаций, определенную выше: import exceptions

    class Error(exceptions.StandardError): pass

    class Warning(exceptions.StandardError): pass

    class InterfaceError(Error): pass

    class DatabaseError(Error): pass

    class InternalError(DatabaseError): pass

    class OperationalError(DatabaseError): pass

    class ProgrammingError(DatabaseError): pass

    class IntegrityError(DatabaseError): pass

    class DataError(DatabaseError): pass

    class NotSupportedError(DatabaseError): pass На C Вы можете использовать API PyErr_NewException(fullname,base,NULL), чтобы создать объекты исключительной ситуации.




  • Содержание  Назад  Вперед