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

