Подмодуль 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@'"