Лучший тип данных для типа данных PostgreSQL - PullRequest
0 голосов
/ 10 сентября 2018

На самом деле у меня есть:

CREATE TABLE public.user(
  id BIGSERIAL NOT NULL,
  nick VARCHAR(255) NOT NULL,
  email VARCHAR(255) NOT NULL,
  born DATE,
  joined DATE,
  tags text[]
);

Я хочу выбрать лучший вариант для сохранения времени регистрации и исходных данных. Я искал интернет, но не нашел хороших результатов. Может быть, лучше использовать время из python и просто вставить его в postgres?

Ответы [ 3 ]

0 голосов
/ 10 сентября 2018

Если вы просто хотите сохранить обычное время без часового пояса, просто используйте timestamp probaböy, полезный для времени создания или так далее.А для таких столбцов, как дата рождения, просто используйте Date

0 голосов
/ 11 сентября 2018

Прежде всего, вам необходимо определить, как часто вы будете изменять структуру вашей базы данных (добавляя или удаляя записи).Я бы порекомендовал вам использовать ORM для этой типовой задачи, такой как SQLAlchemy или PonyORM, и избегать непосредственного манипулирования базой данных.

Отвечая на ваш вопрос: если вы хотите добавить метку времени в любое поле, триггер часто будет полезен для этой задачи.

Вы всегда используете:

Дата тип данных для дат, для которых не требуется определенный момент времени, например, день рождения, опубликованная запись (в блоге).

Отметка времени для определенных моментов, таких как регистрация в приложении, управление приложениями для входа в систему, записи транзакций и т. Д.

Никогда не объединяйте код для обеих частей, поэтому независимо от того, решаете ли вы управлять базой данныхиз кода Python вы должны использовать только код Python.

В том же смысле, если вы решите управлять таблицами и действиями с базой данных, для этой задачи используйте только триггеры и объекты из базы данных.

Надеюсьна ваш вопрос ответили!

0 голосов
/ 10 сентября 2018

Для даты рождения вам не нужно время суток, поэтому DATE будет уместным.

Для даты регистрации вывероятно, хотел бы сохранить дату и время.В этом случае более подходящим будет TIMESTAMP.

Избегайте использования VARCHAR для хранения дат.Поскольку он ничего не проверяет, он позволит вам хранить неверную информацию, и вы не сможете легко вычислить любую информацию на них.Например:

  • Неверное строковое значение # 1: 35-jan-2017: эта дата не существует.
  • Неверное строковое значение # 2: 10-12-99: это 10 декабря,или 12 октября?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...