在python3中将日期值存储到sqlite表中

Posted

技术标签:

【中文标题】在python3中将日期值存储到sqlite表中【英文标题】:Storing date value into sqlite table in python3 【发布时间】:2020-04-22 07:17:30 【问题描述】:

我被这个错误所困扰,希望你能就如何解决它。

背景: 我在 SQLite 中构建了一个“Paycheck”表,该表具有 date 属性、net pay 属性和 gross pay 属性。我在 SQLite 中将 date 属性设置为 date 数据类型,并将 netgross 属性设置为整数 数据类型。

问题: 我遇到了一个问题,当我尝试插入 paycheck 记录时,date 属性将存储为“1994”。问题是,当我创建存储薪水记录的功能时,我在网上看到 SQLite 中 date 数据类型的日期格式是 yyyy-mm-dd,我确保我d 以该格式插入日期,但代码可以正常运行,但在数据库中,每次我尝试添加记录时,它都会为日期显示“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)")

我希望对此有任何反馈和建议。

【问题讨论】:

你是在你的分贝中播种 1994 年还是选择它返回 1994 年? 【参考方案1】:

将此2020-04-22 计算为算术表达式。答案是 1994 年。这就是这个数字的来源。

sqlite 内部没有 数据类型 date。如果您查看 sqlite datatypes doc 的 Affinity Name Examples 部分,则 create table 语句中的类型名称 DATE 会产生 NUMERIC 亲和性。所以它会做数学运算。

将日期列的数据类型更改为 TEXT。您可能希望将sqlite date and time functions doc 放在手边。

【讨论】:

以上是关于在python3中将日期值存储到sqlite表中的主要内容,如果未能解决你的问题,请参考以下文章

在循环中将字符串插入到表中

在php中将excel日期值读取到m-d-Y

通过 FMDatabase 读写 NSDate 到 sqlite 数据库

在 SQLite 中将 SQL 数据插入到链接(外键)表中

如何在 Xamarin Forms 中将日期、日期时间和时间保存到 SQLite 数据库?

在android中将arraylist <String>值插入sqlite