将python的date()对象存入MySql

在从MongoDB转回MySQL时,遇到将Python的date对象存入数据库的问题。尝试使用str_to_date未果,最终发现可以直接将date对象转换为字符串存入MySQL,取出时仍为date类型。具体实现代码中直接传递对象字符串即可完成操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文地址:https://www.jeremyjone.com/351/ ,有转载请注明出处。

用了好久MongoDB,重新回到MySql,发现不知道咋放date对象。百度了一下,发现需要使用str_to_date方法。不过测试是成功的,但是通过python测试程序怎么也不能添加。

file

按照别人说的试了好久也不行,只好换一个思路。。。

其实python有一个非常简单的方法,直接传字符串进去即可。

import time
time.strftime("%Y-%m-%d")
import datetime
datetime.strftime("%Y-%m-%d")

直接通过字符串传给SQL语句,保存到数据库就是date类型。同时取值时返回的是datetime.date()类型。

是不是有点简单了。。。比什么实用str_to_date之类的简单太多了。

具体代码:
file

举一反三:
  • 需要存datetime类型的,直接传入 datetime()对象字符串即可;
  • 需要存time类型的,直接传入 time()datetime.time()对象字符串即可。
扩展知识:

str_to_date(str, format)函数是将str转化为日期类型的数据,其中 str是日期字符串, format是转化后的格式。
format的常用参数*(注意区分大小写)*:
%Y: 年
%m: 月
%d: 日
%H: 时
%i: 分
%s: 秒

还有其他参数, %b是月的英文缩写,%a是星期的英文缩写 等,就不一一列举了,有兴趣的朋友可以自行查看。

### 物联网设备数据存储至MySQL #### 设计表结构 为了有效地将物联网设备的数据(即物模型)存入 MySQL 数据库,合理的表结构设计至关重要。考虑到不同类型的传感器可能发送不同类型的数据,建议采用一种灵活的设计方式来适应多种情况。 对于基本的 IoT 数据记录,可以创建一张名为 `iot_data` 的表格用于保存来自各个设备的时间戳、测量值以及其他元信息: ```sql CREATE TABLE iot_data ( id INT AUTO_INCREMENT PRIMARY KEY, device_id VARCHAR(50), -- 设备唯一标识符 timestamp DATETIME, -- 记录时间 metric_name VARCHAR(100), -- 测量指标名称 (温度/湿度...) value DOUBLE -- 实际读数 ); ``` 如果存在多个属性或复杂对象,则可以通过扩展此模式或将它们拆分为单独的相关联表来进行更精细管理[^1]。 #### 插入数据的方法 针对批量插入操作效率问题,在 Python 中利用 faker 库模拟生成大量符合约束条件的信息并一次性提交给数据库是一种常见做法。下面是一个简单的例子展示如何通过 pymysql 驱动程序执行多行 INSERT 语句: ```python import pymysql from faker import Faker fake = Faker() conn = pymysql.connect( host='localhost', user='root', password='password', database='testdb' ) try: with conn.cursor() as cursor: sql = "INSERT INTO iot_data(device_id, timestamp, metric_name, value) VALUES (%s,%s,%s,%s)" data_points = [ ('device_001', fake.date_time_this_year(), 'temperature', round(fake.pyfloat(min_value=-40,max_value=80),2)), ('device_002', fake.date_time_this_month(), 'humidity', round(fake.random.uniform(0,100),2)) # 可继续添加更多条目... ] result = cursor.executemany(sql,data_points) conn.commit() finally: conn.close() ``` 上述脚本会向 `iot_data` 表中插入两条新纪录,每一条代表一次由特定装置收集到的不同种类环境参数采样结果[^4]。 另外,也可以考虑使用 CSV 文件作为中间媒介,先准备好要加载的内容再借助 LOAD DATA INFILE 命令快速完成大批量导入工作。这种方式特别适合处理那些已经存在于外部文件系统上的现成资料集。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值