Отключение автоматического преобразования в десятичное в SqlAlchemy с Oracle DB - PullRequest
2 голосов
/ 06 февраля 2012

Как мне сказать SqlAlchemy , а не для преобразования числовых полей Oracle в десятичное при запросе базы данных Oracle?

Я пытаюсь заменить группу кода, содержащую закатанные операторы sql, на SqlAlchemy. Большая часть запросов получает 500 столбцов чисел из базы данных. Версия алхимии SQL, использующая их объединенное соединение, работает в 10 раз медленнее, почти наверняка из-за преобразования в десятичное число.

>>> engine = sqlalchemy.create_engine("oracle+cx_oracle://"+connString)
>>> conn = engine.pool.connect()
>>> cursor = conn.cursor()
>>> cursor.execute("""SELECT * FROM MY_TABLE""")
>>> r = cursor.fetchone()
>>> r[-1]
Decimal('0.878935370620606')

Как мне сказать диалекту не делать преобразование в десятичную? (Старый код не использует десятичную дробь, поэтому потеря точности не важна. Коэффициент замедления равен 10).

1 Ответ

0 голосов
/ 02 марта 2012

Я также спросил об этом в списке SqlAlchemy, и получил хороший ответ . Не было никакого способа, но разработчик быстро добавил его. Кроме того, он предложил использовать библиотеку Python cDecimal как гораздо более быструю замену стандартного десятичного модуля библиотеки.

...