gmpy adapter

Поиск
Список
Период
Сортировка
От Daniel Popowich
Тема gmpy adapter
Дата
Msg-id 19819.54231.861653.438162@io.astro.umass.edu
обсуждение исходный текст
Ответы Re: gmpy adapter  (Daniele Varrazzo <daniele.varrazzo@gmail.com>)
Список psycopg
Hello, all,

I have a client app that reads in many values from a numeric column,
does some heavy computations, then writes the results back to another
numeric column.

Python's decimal.Decimal is SLOOOOoooow.  I'm trying to use gmpy.mpq
instead.  I have the adapter for reading the values from the database
working fine:

    numeric2mpq = lambda d,c: None if d is None else gmpy.mpq(d)
    MPQ = psycopg2.extensions.new_type((1700,), "MPQ", numeric2mpq)
    psycopg2.extensions.register_type(MPQ)

This is the adapter I'm using for the reverse (converting the mpq to a
string suitable for casting to numeric):

    def mpq2numeric(mpq):
    s = '%d::numeric/%d::numeric' % (mpq.numer(), mpq.denom())
    return psycopg2.extensions.AsIs(s)
    psycopg2.extensions.register_adapter(gmpy.mpq(0).__class__,
                     mpq2numeric)


While the adapter works, it seems less than optimal as it creates an
expression for the server to process, e.g:

    print psycopg2.extensions.adapt(gmpy.mpq('.333'))
    333::numeric/1000::numeric


Questions:

  1) Is there something I'm overlooking with gmpy that could make this
     much simpler?

  2) What other solutions do folk use for working around pythons slow,
     slow, slow Decimal?


Thanks,

Dan


В списке psycopg по дате отправления:

Предыдущее
От: Daniele Varrazzo
Дата:
Сообщение: Re: Using real libpq parameters
Следующее
От: "A.M."
Дата:
Сообщение: Re: Using real libpq parameters