从Python

时间:2017-11-03 06:36:23

标签: python mysql anaconda pymysql

我想从datetime.date对象中以“May 01 2009”的格式检索日期。我有一个存储在MySQL数据库中的表。它有Date列和Time Column。表格中的日期格式为

2009-05-01

我使用PyMySQL模块连接到MySQL服务器,

conn = pymysql.connect("localhost", "root", "cloudera", "streaming")
cursor = conn.cursor()
sql = "select * from table1 limit 5;"
cursor.execute(sql)
row = cursor.fetchone()
row[0]

输出是,

datetime.date(2009, 5, 1)

当我尝试以下命令以我想要的方式提取日期时,

datetime.date.strftime("%b %d %Y", row[0])

我收到错误,

TypeError: descriptor 'strftime' requires a 'datetime.date' object but received a 'str'

我只是不明白,当提供datetime.date对象时,它会引发错误。 谁能帮帮我吗。提前谢谢。

2 个答案:

答案 0 :(得分:0)

strftimedate个对象的实例方法,而不是单独的函数:

print(row[0].strftime("%b %d %Y"))

错误消息试图告诉您直接从date类调用未实例化的方法(描述符),而不将实例作为第一个参数传递。

有关详细信息,请查看date objects documentation

答案 1 :(得分:0)

这是一个datetime.date对象。它有一个 str ()方法,可以解决您的问题。

import datetime
date=datetime.date(2009,5,1)
datetime.date(2009, 5, 1)
str(d)

将导致 '2009-05-01'