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

使用SQLAlchemy写入PostgreSQL时DateTime字段始终为NULL,求助排查

问题原因及修复方案

错误1:类属性与数据库字段不匹配

你的Foo类中定义的DateTime数据库字段是timestamp_of_csv_file,但在__init__方法里却给self.timestamp赋值——这个属性并未和数据库字段做映射绑定,SQLAlchemy不会将其写入数据库,导致该字段始终为NULL。

错误2:构造函数传参顺序颠倒

Foo的__init__方法参数顺序是lines在前、timestamp在后,但你实例化时传的是Foo(dt_m, count_lines),把时间戳和行数的顺序搞反了,即便属性名正确,数据也会错位。


修复后的代码

修正后的Foo类

class Foo(Base):
    __tablename__ = 'Foo'
    lines = Column("lines", Integer, primary_key=True)
    timestamp_of_csv_file = Column("timestamp_of_csv_file", DateTime)

    def __init__(self, lines, timestamp):
        self.lines = lines
        # 赋值给类中定义的数据库映射字段
        self.timestamp_of_csv_file = timestamp

修正后的实例化代码

# 传参顺序与__init__参数一致:行数在前,时间戳在后
session.add(Foo(count_lines, dt_m))
session.commit()

修复后,PostgreSQL的INSERT语句会正确携带时间戳值,不会再出现NULL的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 22:08:12