Поскольку « Типы символов » в документации указаны, varchar(n)
, char(n)
и text
сохраняются одинаково. Единственное различие - дополнительные циклы, необходимые для проверки длины, если она задана, и дополнительное пространство и время, необходимые для заполнения для char(n)
.
Однако, когда вам нужно только сохранить один символ, есть небольшое преимущество в производительности для использования специального типа "char"
(сохранить двойные кавычки - они являются частью имени типа). Вы получаете более быстрый доступ к полю, и нет накладных расходов для хранения длины.
Я только что сделал таблицу из 1 000 000 случайных "char"
, выбранных из нижнего регистра. Запрос на получение частотного распределения (select count(*), field ... group by field
) занимает около 650 миллисекунд, против примерно 760 по тем же данным, используя поле text
.
Можно дразнить datetime
использование этого:
В модуле sources.py
:
import datetime
class ShowTime:
def current_date():
return datetime.date.today().strftime('%Y-%m-%d')
В Вашем tests.py
:
from unittest import TestCase, mock
import datetime
class TestShowTime(TestCase):
def setUp(self) -> None:
self.st = sources.ShowTime()
super().setUp()
@mock.patch('sources.datetime.date')
def test_current_date(self, date_mock):
date_mock.today.return_value = datetime.datetime(year=2019, month=10, day=1)
current_date = self.st.current_date()
self.assertEqual(current_date, '2019-10-01')