【问题标题】:Access python datetime that is returned from mysqldb query访问从 mysqldb 查询返回的 python 日期时间
【发布时间】:2016-02-19 07:26:51
【问题描述】:

当我执行下面的代码时:

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() 吗?因为我真正想要做的只是花费时间并将其转换为秒,但我无法弄清楚如何在不执行诸如拆分返回的内容或尝试访问索引 14 的元组条目的情况下返回时间,这是'不是我真正想要的,而且令人费解。我想调用这个使用 datetime 方法调用直接返回的 datetime.datetime() 值。任何见解将不胜感激。

【问题讨论】:

    标签: python datetime mysql-python


    【解决方案1】:

    您是在问如何返回标量?所以不必直接做记录[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

    【讨论】:

    • 不,我想知道,由于 mysqldb 将索引 14 作为日期时间返回,是否有一种方法可以直接使用 datetime 模块简单地查询数据库。或类似的东西。最后我需要做的是只返回时间并将其转换为秒。
    • 这没有意义,你能不能再添加一个你想要的例子。
    • 是的,对不起,我没有很多python经验。我想我应该编辑我的问题。我只需要从索引 14(元组条目 3、4 和 5)中获取时间,并将其转换为秒。就是这样。
    【解决方案2】:

    我解决了这个问题:

    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
        .
        .
        .
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-28
      • 1970-01-01
      • 2019-04-16
      • 1970-01-01
      • 2013-10-31
      • 2014-03-05
      相关资源
      最近更新 更多