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

Flask-SQLAlchemy报错:无法导入'Datetime',添加默认创建时间遇阻

解决Flask-SQLAlchemy导入'Datetime'报错及自动添加创建时间问题

你遇到的问题大概率是大小写混淆导致的——SQLAlchemy里的日期时间字段类型是DateTime(注意首字母D和T都是大写),而不是Datetime,这是很多新手容易踩的坑。我给你一步步梳理解决方案:

1. 修正database_setup.py里的导入与字段定义

首先打开你的database_setup.py,检查导入语句和Usuario类的字段:

正确的代码示例:

# 导入正确的SQLAlchemy类型和datetime模块
from sqlalchemy import Column, Integer, String, DateTime  # 这里是DateTime,不是Datetime
from sqlalchemy.ext.declarative import declarative_base
from datetime import datetime  # Python标准库的datetime模块

Base = declarative_base()

class Usuario(Base):
    __tablename__ = 'usuario'
    
    id = Column(Integer, primary_key=True)
    # 其他字段比如用户名、邮箱等根据你的需求定义
    nombre = Column(String(250), nullable=False)
    # 定义创建时间字段,设置默认值为当前UTC时间
    fecha_creacion = Column(DateTime, default=datetime.utcnow)  # 注意不要加(),不然会在类定义时就生成固定时间

2. 检查project.py的导入逻辑

确保你的project.py里的导入语句正确,并且两个文件在同一个目录下:

# project.py第4行的导入应该是这样
from database_setup import Base, Usuario

如果database_setup.py在子目录里,记得在子目录添加__init__.py空文件,或者调整Python运行路径。

关键注意点

  • 别搞混两个概念:SQLAlchemy的字段类型DateTime(大写开头)和Python标准库的datetime模块(全小写)。
  • 设置默认值时用datetime.utcnow而不是datetime.utcnow()——加括号的话,时间会在类定义阶段就固定下来,而不是每次插入数据时生成新的时间戳。

这样调整后,再运行python3 project.py应该就能解决导入报错,并且插入用户数据时会自动填充创建时间啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:33:51