mysql-connector を使用するときに、python 型から mysql 型へのコンバーターを作成する方法を知っています ( https://stackoverflow.com/a/19502805/1518546を参照)。
ただし、mysql から python へのデフォルトの変換をオーバーライドするにはどうすればよいですか。たとえば、mysql の Decimal 型を Python の Decimal 型ではなく float にしたい場合はどうすればよいですか?
mysql-connector を使用するときに、python 型から mysql 型へのコンバーターを作成する方法を知っています ( https://stackoverflow.com/a/19502805/1518546を参照)。
ただし、mysql から python へのデフォルトの変換をオーバーライドするにはどうすればよいですか。たとえば、mysql の Decimal 型を Python の Decimal 型ではなく float にしたい場合はどうすればよいですか?
コードを見ると、オーバーライドする関数のパターンは次のとおり_TYPE_to_python
です。直観的ではなかったのは型名です。次のように見つけることができます。
import mysql.connector
for item in mysql.connector.constants.FieldType.desc:
print(item)
次のようなものが生成されます。
NULL
DATETIME
DATE
LONG
GEOMETRY
LONGLONG
TINY
NEWDECIMAL
BIT
MEDIUM_BLOB
SET
YEAR
LONG_BLOB
VARCHAR
VAR_STRING
TINY_BLOB
FLOAT
TIMESTAMP
NEWDATE
DOUBLE
INT24
SHORT
DECIMAL
TIME
BLOB
STRING
ENUM
したがって、Decimal を float として返すには、_DECIMAL_to_python
and/or__NEWDECIMAL_to_python
メソッドをオーバーライドします。どちらがいつ使われるかわかりません。