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

Flask使用SQLAlchemy导入db时报TypeError: got 'datetime'错误求助

Flask SQLAlchemy导入db报错解决方案

核心报错原因

你在定义Post模型的date_posted字段时,错误使用了非法参数名datetime,SQLAlchemy的Column字段设置默认值的合法参数为default,该错误直接触发了返回的TypeError。
将原错误代码行:

date_posted = db.Column(db.DateTime, nullable=False, datetime=datetime.utcnow)

修改为:

date_posted = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)

即可解决该类型报错。

其他待修正的隐藏问题

(1)数据库连接URI拼写错误

你当前配置的SQLALCHEMY_DATABASE_URI前缀拼写错误,aqlite应为sqlite,修正后配置:

app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site.db'

(2)消除弃用警告

返回信息中的FSADeprecationWarning是因为未显式设置SQLALCHEMY_TRACK_MODIFICATIONS参数,在配置中添加以下行即可消除警告:

app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

修正后完整代码

from datetime import datetime
from flask import Flask, render_template, url_for, flash, redirect
from flask_sqlalchemy import SQLAlchemy
from forms import RegistrationForm, LoginForm
 
app = Flask(__name__)
app.config['SECRET_KEY'] = 'cac78a5498388aa4a95fb2be0f0a6499'
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(20), unique=True, nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)
    image_file = db.Column(db.String(20), unique=True, default='default.jpg')
    password = db.Column(db.String(60), nullable=False)
    posts = db.relationship('Post', backref="author", lazy=True)

    def __repr__(self):
        return f"User('{self.username}','{self.email}','{self.image_file}')"

class Post(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(100), nullable=False)
    date_posted = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
    content = db.Column(db.Text, nullable=False)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)

    def __repr__(self):
        return f"Post('{self.title}','{self.date_posted}')"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 13:15:02