访问从mysqldb查询返回的python datetime

时间:2015-11-17 19:13:24

标签: python datetime mysql-python

当我执行以下代码时:

db = MySQLdb.connect("localhost","root","password","database")
cursor = db.cursor()
cursor.execute("SELECT * FROM reportPref WHERE lastDate LIKE '2015-11-17%'")

records = cursor.fetchall()
print records

返回(为简洁起见,我将结果缩短为一行):

(22L, 4L, 88L, None, None, 11L, 3L, 1320L, 0L, 1L, 0L, 1, datetime.date(2010, 3, 8), datetime.date(1970, 1, 1), datetime.datetime(2015, 11, 17, 5, 6, 32), 'test report', 0L, None, None, 1, 1, 0, None, None)

索引14是datetime.datetime(2015,11,17,5,6,32)。有没有什么方法可以调用这个datetime.datetime()数据库直接返回使用datetime?因为我真正想做的就是花时间把它转换成秒,但是我无法弄清楚如何只返回时间而不做分裂返回或试图访问元组的东西索引14的条目并不是我想要的并且是错综复杂的。我想调用这个datetime.datetime()值,该值是使用datetime方法调用直接返回的。任何见解将不胜感激。

2 个答案:

答案 0 :(得分:0)

您是否在问如何返回标量?所以不必记录[0] [14],而是直接记录=日期?如果是这样,您可以更改查询以仅选择该字段

SELECT myDateCol FROM reportPref WHERE lastDate LIKE '2015-11-17%'

然后将一个sql类作为一个抽象层编写到MySQLdb,您可以根据自己的用例自定义它,或者使用sqlalchemy,它已经完成并具有标量函数。

http://docs.sqlalchemy.org/en/rel_1_0/orm/query.html#sqlalchemy.orm.query.Query.scalar

答案 1 :(得分:0)

我解决了这个问题如下:

db = MySQLdb.connect("localhost","root","password","database")
cursor = db.cursor()
cursor.execute("SELECT * FROM reportPref WHERE lastDate LIKE '2015-11-17%'")

records = cursor.fetchall()

for record in records:
    rec = record[14]
    print rec.time() 

返回输出如下:

18:06:24
17:06:01
00:06:05
18:06:24
17:06:06
18:06:24
    .
    .
    .

这正是我所需要的!感谢所有的支持!