文章目录

  • 前言
  • 一、查询SQL语句中数据转换
    • 1、思路
    • 2、示例
    • 3、常用格式化模式
    • 4、注意事项
  • 二、自定义JSONEncoder处理
    • 1、思路
    • 2、示例
    • 3、使用方法
  • 写在结尾


前言

  使用Python开发查询PostgreSQL数据库,返回数据中有timestamp类型数据字段。如果使用json.dumps转换成json对象,可能会遇到:“TypeError: Object of type datetime is not JSON serializable”错误,大概意思是datetime.datetime不可JSON序列化。
  数据库字段定义:

"file_date" timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP

  使用print将查询后元组中的值打印出来,发现timestamp类型的数据是以对象的形式存在的,如:datetime.datetime(2025, 6, 24, 11, 45, 36, 11746)
  本文尝试在不改动数据库的情况下记录几种解决方法。

一、查询SQL语句中数据转换

1、思路

  从数据源头处理,PostgreSQL中直接查询timestamp类型数据到元组中表现为对象,那就从查询语句着手,在查询的SQL语句中将数据转换成字符串格式数据。
  在PostgreSQL中,可以使用TO_CHAR 函数将日期格式化为多种不同的格式。TO_CHAR 函数接受两个参数:一个是要格式化的日期值,另一个是定义输出格式的模板。

2、示例

SELECT TO_CHAR("file_date", 'YYYY-MM-DD HH24:MI:SS');

  上述示例将当前时间格式化为 YYYY-MM-DD HH24:MI:SS 格式。

3、常用格式化模式

  • YYYY:四位数年份
  • MM:两位数月份(01-12)
  • DD:两位数日期(01-31)
  • HH24:24小时制的小时(00-23)
  • MI:分钟(00-59)
  • SS:秒(00-59)

4、注意事项

  • 日期插入:推荐使用 ISO 格式 YYYY-MM-DD 插入日期值。
  • 错误处理:如果插入的日期格式不正确,可能会导致错误。例如,‘16-10-2022’ 会导致错误,因为数据库无法确定哪个字段是日期,哪个字段是月份。
  • 通过使用 TO_CHAR 函数和适当的格式化模式,可以灵活地在 PostgreSQL 中处理和显示日期。

二、自定义JSONEncoder处理

1、思路

  通过Python中的json模块。json.dumps()是一个把Python对象转换成json字符串的函数。如下:

json.dumps(obj, *, skipkeys=False, ensure_ascii=True, check_circular=True,allow_nan=True, cls=None, indent=None, separators=None,default=None, sort_keys=False, **kw)

  其中的cls参数允许自定义JSONEncoder的派生类,覆盖其中的default()方法实现序列化其他类型的数据。

2、示例

from datetime import datetime
import jsonclass DateTimeEncoder(json.JSONEncoder):def default(self, o):if isinstance(o, datetime):return o.isoformat()return super().default(o)

3、使用方法

data = (1, 'c7ffc2fc7e9182e649e3cae0d9e8bf98', 0, datetime.datetime(2025, 6, 24, 11, 45, 36, 11746), None)
json.dumps(data, ensure_ascii=False, cls=DateTimeEncoder)

写在结尾

  疑云盘诘久徘徊,忽见天光破雾来。解惑明心皆朗彻,故有此文以记之!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/86354.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/86354.shtml
英文地址,请注明出处:http://en.pswp.cn/web/86354.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QT6 源(130)视图模型架构中的字符串列表模型 QStringListModel:成员函数,本类的继承关系图以及源码注释

(1)字符串列表型的 model ,可以交给视图 view 来显示,也可以由组合框 comboBox 读取其中的内容 : (2)以下开始学习本字符串 model 里的成员函数,本类没有再定义信号与槽函数 &#x…

dockerfile命令及构建+docker-compose安装构建

一,dockerfile常用命令 命令介绍FROM–指定基础镜像LABEL作者信息USER切换运行属主身份WORKDUR切换工作目录ENV用于docker容器设置环境变量RUN用来执行命令行的命令COPY把宿主机文件复制到镜像中去ADD将文件路径复制添加到容器内部路径EXPOSE为容器打开指定要监听的…

数学:逆元,同余

逆元,同余 0.引言1.同余1.1 同余的基本性质1.2 解同余线性方程 2.逆元费马小定理求逆元(m必需为质数)扩展欧几里得求逆元(使用任意互质的a和m) 0.引言 本文讲述什么是逆元,如何求逆元。求逆元的两种常规方法。然后知道…

广州华锐互动:技术与创意双驱动的 VR 先锋​

广州华锐互动能够在众多 VR 公司中崭露头角,离不开其强大的技术实力和源源不断的创意灵感 。在技术研发方面,广州华锐互动组建了一支专业的技术团队,团队成员均具备扎实的技术功底和丰富的行业经验,他们专注于 VR、AR、3D 等核心技…

教育培训教学通用PPT模版

教育培训通用PPT模版,儿童教育PPT模版,公开课件教学PPT模版,读书笔记PPT模版,古风PPT模版,教育教学通用PPT模版 教育培训教学通用PPT模版:https://pan.quark.cn/s/6c2ed020e398

Data Vault 初探(五) —— 定期装载_SQL

说明: 1. 定期装载的周期为每天一次。 2. 每天装载自上次装载后的变化数据 3. 建立源数据库的过渡表用于CDC 4. 建立cdc_time表用于基于时间戳的CDC 5. 因为源库上只有订单销售表有时间属性,所以除了sales_order和sales_order_item拉取变化数据外&#x…

Java虚拟机栈(JVM Stack)详解与工作流程分析

Java虚拟机栈(JVM Stack)详解与工作流程分析 1. 虚拟机栈核心概念 基本特性 线程私有:每个线程在创建时都会分配一个独立的栈存储内容: 栈帧(Stack Frame):每个方法调用对应一个栈帧 生命周期…

Sonarqube:Jenkins触发sonar扫描出现UnsupportedClassVersionError错误处理

文章目录 1、问题现象2、问题根因3、解决思路3.1 解决思路13.2 解决思路23.3 解决思路3 1、问题现象 问题现象:在每次Jenkins触发sonar扫描时,Sonar-scanner扫描器执行都会出现UnsupportedClassVersionError异常,如下: ERROR: …

Spark SQL to_json 函数介绍

目录 前言函数介绍参数说明示例 前言 在Apache Hive中,并没有内置的to_json函数。在Apache Spark SQL中确实有to_json函数,它可以用来将结构化数据(如结构化类型或MAP类型)转换为JSON字符串。这个功能对于需要将表格数据输出为JSON格式的场景…

《解锁前端潜力:自动化流程搭建秘籍》

当项目逐渐从萌芽走向繁茂,中期阶段对流程优化与效率提升的需求便愈发迫切。搭建一套自动化测试、持续集成与部署的完整流程,已然成为突破瓶颈、保障代码质量与上线效率的关键密钥。这不仅是技术的进阶,更是思维与协作模式的革新。在踏上构建…

计算机体系结构中的片上系统SoC是什么?

计算机体系结构中的片上系统SoC是什么? 片上系统(SoC,System on Chip) 是一种将计算机或其他电子系统的多个关键组件集成到单一芯片上的集成电路设计。它不仅仅是处理器(CPU),而是将处理器、内…

linux虚拟机基础-磁盘扩容详细版本模拟实验

扩容实验参考上一篇博客: https://blog.csdn.net/wenxiaocsdn/article/details/141932877?spm1001.2014.3001.5502 LVM基础知识附录红帽官方文档 配置和管理逻辑卷 | Red Hat Enterprise Linux | 8 | Red Hat Documentation LVM逻辑结构图 LVM 管理命令速查表&…

hbase高可用部署

要实现HBase集群的高可用部署(High Availability, HA),核心在于消除单点故障(特别是HMaster节点),并确保数据冗余和服务自动恢复。以下是、关键步骤和配置要点: 一、核心配置步骤‌ ‌1.1 启用…

STM32F103ZET6开发板【项目工程创建】+具体实现步骤流程

硬件介绍 芯片为STM32F103ZET6 STM32F103 资源简介 STM32 的优异性 1,超低的价格。8 位机的价格,32 位机的性能,是 STM32 最大的优势。 2,超多的外设。STM32 拥有包括:FMC、TIMER、SPI、IIC、USB、CAN、IIS、SDIO、…

CyberGlove触觉反馈手套遥操作机器人灵巧手解决方案

CyberGlove触觉反馈手套确实可以实时捕捉运动信号和触觉反馈,并将其重新定位到人形机器人上。CyberGlove触觉反馈手套遥操作机器人是通过手套上的传感器捕捉手部动作,将信号传输给机器人,同时接收机器人反馈的触觉信息,实现远程操…

[C#]C# winform部署yolov13目标检测的onnx模型

yolov13官方框架:github.com/iMoonLab/yolov13/releases/tag/yolov13 【测试环境】 vs2019 netframework4.7.2 opencvsharp4.8.0 onnxruntime1.16.3 【效果展示】 【调用代码】 using System; using System.Collections.Generic; using System.ComponentMode…

创客匠人 AI 赋能:创始人 IP 打造的效率革命与信任重构

在注意力经济时代,创始人 IP 面临内容生产效率与信任构建的双重挑战。创客匠人 2025 年战略升级为 “IP 变现整体解决方案服务商”,其推出的 AI 销售信、免训数字人、智能客服三大工具,正通过技术重构破解行业痛点,为知识变现开辟…

飞轮储能VSG控制策略辅助双馈风机一次调频的仿真模型研究

以下是为您撰写的《飞轮储能VSG控制策略辅助双馈风机一次调频的仿真模型研究》技术报告,包含完整的理论分析、控制策略设计及MATLAB/Simulink仿真实现细节: 飞轮储能VSG控制策略辅助双馈风机一次调频的仿真模型研究 摘要 针对双馈感应发电机(DFIG)参与电网一次调频时存在…

临床开发计划:从实验室到市场的战略蓝图

一、临床开发计划概述 1.1 定义与重要性 1.1.1 CDP核心定义 临床开发计划(CDP)是药物、生物制品或医疗器械从实验室走向市场的核心路线图,详细规划临床研究及其策略、时间表和资源需求,以满足监管机构审批要求。 1.1.2 指导意义 CDP为开发团队提供清晰指引,指导资源规划…

【大模型实战】微调Qwen2.5 VL模型,增强目标检测任务。

文章目录 制作数据集使用微调的模型制作数据集 制作数据集 这个章节将详细解析一个将Labelme标注数据集转换为Qwen2.5-VL模型训练格式的Python脚本。该工具实现了图像大小调整、边界框坐标转换和数据格式标准化等功能。生成适用Qwen2.5-VL的数据集。 核心功能概述 图像处理&a…