将python的date()对象存入MySql

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

原文地址: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是星期的英文缩写 等,就不一一列举了,有兴趣的朋友可以自行查看。

Python可以借助`pandas`和`sqlalchemy`库将DataFrame存入MySQL。具体步骤如下: 1. **安装必要的库**:需要安装`pandas`、`sqlalchemy`和`pymysql`库。可以使用以下命令进行安装: ```bash pip install pandas sqlalchemy pymysql ``` 2. **创建数据库连接引擎**:使用`sqlalchemy`的`create_engine`函数创建数据库连接引擎。示例代码如下: ```python from sqlalchemy import create_engine engine = create_engine("mysql+pymysql://root:我的密码@localhost:3306/test1") ``` 这里的`root`是数据库用户名,`我的密码`需要替换为实际的数据库密码,`localhost`是数据库主机地址,`3306`是端口号,`test1`是数据库名[^2]。 3. **创建DataFrame**:使用`pandas`创建一个DataFrame对象,示例如下: ```python import pandas as pd import numpy as np np.random.seed(24) m = np.random.randint(0, 100, size=(100, 5)) df = pd.DataFrame(m, columns=['departmen', 'date', 'proj_class', 'support_mode', 'content']) ``` 该代码创建了一个包含随机整数的DataFrame,列名分别为`departmen`、`date`、`proj_class`、`support_mode`和`content`[^2]。 4. **将DataFrame存入MySQL**:使用`DataFrame`的`to_sql`方法将数据存入MySQL数据库。示例代码如下: ```python df.to_sql(name='test_df', con=engine) ``` 这里的`name`是要存储到MySQL中的表名,`con`是前面创建的数据库连接引擎[^2]。 还可以将上述步骤封装成一个类,方便复用,示例如下: ```python from sqlalchemy import create_engine import pandas as pd class MySQLUtil: def __init__(self, host, port, username, password, db, table): self.host = host self.port = port self.username = username self.password = password self.db = db self.table = table self.write_mode = 'append' self.connect_url = 'mysql+pymysql://' + username + ':' + password + '@' + host + ':' + port + '/' + db + '?charset=utf8' self.mysql_connect = create_engine(self.connect_url) def df_write_mysql(self, data): pd.io.sql.to_sql(data, self.table, self.mysql_connect, schema=self.db, if_exists=self.write_mode) print("write into mysql finish") # 使用示例 host = '127.0.0.1' port = '3306' username = 'root' password = '123456' db = 'data_base' table = 't_demo' data = { 'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada'], 'year': [2000, 2001, 2002, 2001, 2002], 'pop': [1.5, 1.7, 3.6, 2.4, 2.9] } frame = pd.DataFrame(data) mysql_util = MySQLUtil(host, port, username, password, db, table) mysql_util.df_write_mysql(frame) ``` 这个类封装了将DataFrame写入MySQL的操作,通过创建`MySQLUtil`类的实例并调用`df_write_mysql`方法,可以将DataFrame数据写入指定的MySQL表中[^5]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值