Подмодуль MySQLdb.converters
обрабатывает все преобразования типов для MySQL. Если преобразования типов по умолчанию вам не нужны, то можно сделать свои собственные. Преобразования словаря сопоставляют некоторый тип с функцией преобразования, которая возвращает соответствующее значение:
key: FIELD_TYPE.*
(из MySQLdb.constants
)
Функция преобразования: аргументы - строка, возвращает - объект Python.
key: object
(типа объекта Python из типов или класс)
Функция преобразования: аргументы - объект Python указанного типа или класса и конверсионный словарь, возвращает - литеральное значение SQL.
Примечания: Большинство функций преобразования могут игнорировать словарь, но это обязательный параметр. Это необходимо для преобразования таких вещей, как последовательности и экземпляры.
Не изменяйте конверсии, если можно этого избежать. Вместо них создайте копии (методом .copy()
), измените копии, а затем передайте их в MySQLdb.connect()
.
MySQLdb.converters.Bool2Str()
,MySQLdb.converters.Decimal2Literal()
,MySQLdb.converters.Float2Str()
,MySQLdb.converters.None2NULL()
,MySQLdb.converters.Thing2Literal()
,MySQLdb.converters.Thing2Str()
,MySQLdb.converters.array2Str()
.MySQLdb.converters.Bool2Str(s, d)
:Метод MySQLdb.converters.Bool2Str()
преобразует логическое выражение Python в строку.
>>> from MySQLdb import converters >>> converters.Bool2Str(True, {}) # b'1'
MySQLdb.converters.Decimal2Literal(o, d)
:Метод MySQLdb.converters.Decimal2Literal()
преобразует число Decimal
в строку.
>>> from MySQLdb import converters >>> from decimal import Decimal >>> a = Decimal('3.3') >>> converters.Decimal2Literal(a, {}) # '3.3'
MySQLdb.converters.Float2Str(o, d)
:Метод MySQLdb.converters.Float2Str()
преобразует число c плавающей запятой в строку.
>>> from MySQLdb import converters >>> converters.Float2Str(3.1415926, {}) # '3.1415926e0'
MySQLdb.converters.None2NULL(o, d)
:Метод converters.None2NULL()
преобразует None
в NULL
.
>>> from MySQLdb import converters >>> converters.None2NULL(None, {}) # b'NULL'
MySQLdb.converters.Thing2Literal(o, d)
:Метод MySQLdb.converters.Thing2Literal()
преобразует чего-либо в строковый литерал SQL.
>>> from MySQLdb import converters >>> a = {x for x in range(6)} >>> converters.Thing2Literal(a, {}) # b"'{0, 1, 2, 3, 4, 5}'"
При использовании MySQL-3.23 или новее .string_literal()
является методом объекта _mysql.MYSQL
, и эта функция будет переопределена этим методом при создании соединения.
MySQLdb.converters.Thing2Str(s, d)
:Метод MySQLdb.converters.Thing2Str()
преобразует что-либо в строку с помощью str()
..
>>> from MySQLdb import converters >>> a = {x for x in range(6)} >>> converters.Thing2Str(a, {}) # '{0, 1, 2, 3, 4, 5}'
MySQLdb.converters.array2Str(o, d)
:Метод MySQLdb.converters.array2Str()
преобразует объект array
при помощи выражения Thing2Literal(o.tostring(), d)
.
>>> from array import array >>> from MySQLdb import converters >>> arr = array('d', [1.0, 2.0, 3.14]) >>> converters.array2Str(arr, {}) # b"'\\0\\0\\0\\0\\0\\0\xf0?\\0\\0\\0\\0\\0\\0\\0@\x1f\x85\xebQ\xb8\x1e\t@'"