Сохранение значения даты в sqlite таблице в python3 - PullRequest
0 голосов
/ 22 апреля 2020

Я застрял с этой ошибкой и хотел бы узнать, как ее устранить.

Справочная информация: Я создал таблицу "Paycheck" в SQLite, которая имеет атрибут date, net атрибут оплаты и брутто атрибут оплаты. Я установил для атрибута date значение date в SQLite, а для атрибута net и gross значение целое число тип данных.

Проблема: у меня возникла проблема, при которой при попытке вставить запись paycheck атрибут date будет сохранен как "1994". Дело в том, что, когда я делал функцию для хранения записи о зарплате, я прочитал в Интернете, что формат даты для типа данных date в SQLite был yyyy-mm-dd, и я убедился, что вставьте дату в этом формате, но код будет работать нормально, но в базе данных, каждый раз, когда я пытаюсь добавить запись, для даты будет указано «1994».

Вот весь связанный код:

import sqlite3
import datetime


def date_sql_format():
    """return date in sql DATE format"""
    return str(datetime.datetime.now().strftime("%Y-%m-%d"))


def execute(command: str):
    """Take a sql query and execute it on the database."""
    connect = sqlite3.connect("db.sqlite")
    cursor = connect.cursor()
    cursor.execute(command)
    connect.commit()
    connect.close()


def add_paycheck(date: str, net: float, gross: float):
    """Add a paycheck record to the database."""
    template = f"{date}, {net}, {gross}"
    execute(f"INSERT INTO Paycheck (Date, Net, Gross) VALUES ({template})")

Буду рад любым отзывам и предложениям по этому поводу.

1 Ответ

0 голосов
/ 22 апреля 2020

Оцените это 2020-04-22 как арифметическое c выражение. Ответ 1994. Вот откуда это число.

sqlite не имеет тип данных date внутри. Если вы посмотрите на Примеры имен сходства типов данных sqlite, выполните c, то имя типа DATE из оператора создания таблицы приведет к сходству NUMERIC. Так что это делает математику.

Измените тип данных столбца даты на TEXT. И вы, возможно, захотите, чтобы функции sqlite для даты и времени работали c под рукой.

...