SQLalchemy дает мне следующее предупреждение, когда я использую числовой столбец с движком базы данных SQLite.Как обрабатывать десятичные знаки в SQLalchemy & SQLite
SAWarning: Диалект SQLite + pysqlite делает поддержку не десятичные объекты изначально
Я пытаюсь выяснить, лучший способ иметь pkgPrice = Column(Numeric(12,2))
в SQLAlchemy в то же время с помощью SQLite.
Этот вопрос [1] How to convert Python decimal to SQLite numeric? показывает способ использования sqlite3.register_adapter(D, adapt_decimal)
, чтобы получать и возвращать SQLite Decimal, но хранить строки, но я не знаю, как копаться в ядре SQLAlchemy, чтобы сделать это еще. Тип Декораторы выглядят как правильный подход, но я их еще не убегаю.
У кого-нибудь есть рецепт декодера типа SQLAlchemy, который будет иметь числовые или десятичные числа в модели SQLAlchemy, но хранить их как строки в SQLite?
Надеюсь, вы не возражаете, если я предлагаю вам небольшое изменение кода. :) Вместо того, чтобы просто вернуть значение в process_result_value я предлагаю сделать, если ветвь: Защиту process_result_value (самость, значение, говор): если значение = «None»: возврат D (значение) еще: return None – Tiho
@van, Вы пробовали запрашивать новые столбцы SqliteNumeric? Результат неверен, поскольку сравнение строк полностью отличается от численного сравнения. Если вы выполните session.query (T) .filter (T.value> 100), вы увидите. –
Кроме того, я думаю, что часть load_dialect_impl не нужна, учитывая, что вы уже указали impl = types.String –