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
相关产品推荐
相关产品推荐

