SQLalchemy cung cấp cho tôi cảnh báo sau khi tôi sử dụng cột Số với công cụ cơ sở dữ liệu SQLite.Làm cách nào để xử lý số thập phân trong SQLalchemy & SQLite
SAWarning: Dialect sqlite + pysqlite không hỗ trợ không đối tượng Decimal natively
Tôi đang cố gắng tìm ra cách tốt nhất để có pkgPrice = Column(Numeric(12,2))
trong SQLAlchemy trong khi vẫn sử dụng SQLite.
Câu hỏi này [1] How to convert Python decimal to SQLite numeric? cho biết cách sử dụng sqlite3.register_adapter(D, adapt_decimal)
để SQLite nhận và trả về thập phân, nhưng lưu trữ chuỗi, nhưng tôi không biết cách khai thác lõi SQLAlchemy để làm điều này. Loại trang trí trông giống như cách tiếp cận đúng nhưng tôi không grok chúng được nêu ra.
Có ai có SQLAlchemy Type Decorator Recipe sẽ có số hoặc số thập phân trong mô hình SQLAlchemy, nhưng lưu trữ chúng dưới dạng chuỗi trong SQLite không?
Tôi hy vọng bạn sẽ không phiền nếu tôi đề xuất một thay đổi nhỏ trong mã của bạn. :) Thay vì chỉ trả lại một giá trị trong process_result_value tôi sẽ đề nghị để thực hiện nếu chi nhánh: def process_result_value (tự, giá trị, phương ngữ): nếu value = "Không": trở lại D (giá trị) khác: return None – Tiho
@van, Bạn đã thử truy vấn trên các cột SqliteNumeric mới chưa? Kết quả không chính xác khi so sánh chuỗi hoàn toàn khác so với so sánh số. Nếu bạn làm session.query (T) .filter (T.value> 100) bạn sẽ thấy. –
Ngoài ra, tôi nghĩ rằng phần load_dialect_impl là không cần thiết, cho rằng bạn đã chỉ định impl = types.String –