You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django项目中sqlite3插入格式化日期后变为2015的问题

问题原因与解决办法

问题根源

你插入日期时没给{date}加单引号,SQLite会把2023-02-06解析成数学运算:2023 - 2 - 6 = 2015,这就是数据库里存成2015的原因。

修复代码

修改database.py中的INSERT语句,给日期值加上单引号:

def add_user(self, email, password):
    date = datetime.date.today().strftime('%Y-%m-%d')
    self.cursor.execute(f"""
        INSERT INTO App_user ('username','email','password', 'email_preference', 'region', 'date_joined')
        VALUES ('{username}', '{email}', '{password}', 'All', 'None', '{date}')
    """)
    self.con.commit()

Django项目的规范做法

既然是Django项目,强烈建议用Django ORM操作数据库,既避免SQL注入风险,又能自动处理字段类型转换:

from .models import User
import datetime

def add_user(email, password):
    User.objects.create(
        username=username,
        email=email,
        password=password,
        email_preference='All',
        region='None',
        date_joined=datetime.date.today()
    )

用ORM无需手动格式化日期,框架会自动适配数据库要求的格式。

内容的提问来源于stack exchange,提问作者logan_9997

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 18:45:26