【问题标题】:How to use mysql-connector to retrieve a datetime value?如何使用 mysql-connector 检索日期时间值?
【发布时间】:2020-02-26 19:41:30
【问题描述】:

我正在尝试从名为players 的表中检索一行,该表包含一个名为lastheal 的列,类型为datetime。 我的代码如下:

import mysql.connector
import datetime
class Player():
    def __init__(self, name):
        conn = mysql.connector.connect(host="xxxx", database="xxxx", user="xxxx", passwd="xxxx")
        c = conn.cursor(prepared=True)
        c.execute("""SELECT * FROM players WHERE nameplayer = %s""", (name,))
        for player in c:
            print player

我可以轻松地从其他表中检索不包含 datetime 值的行。但是,上面的代码会产生以下错误:

File "~/player.py", line 14, in __init__
    for player in c:
File "~/.local/lib/python2.7/site-packages/mysql/connector/cursor.py", line 1245, in fetchone
    return self._row_to_python(row, self.description)
File "~/.local/lib/python2.7/site-packages/mysql/connector/cursor.py", line 1231, in _row_to_python
    row = self._connection.converter.row_to_python(rowdata, desc)
File "~/.local/lib/python2.7/site-packages/mysql/connector/conversion.py", line 407, in row_to_python
    result[i] = self._cache_field_types[field_type](row[i], field)
File "~/.local/lib/python2.7/site-packages/mysql/connector/conversion.py", line 506, in _DATETIME_to_python
    (date_, time_) = value.split(b' ')
AttributeError: 'datetime.datetime' object has no attribute 'split'

如何让mysql.connector 以正确的方式检索具有datetime 值的行?

【问题讨论】:

    标签: python mysql mysql-connector-python


    【解决方案1】:

    您收到此错误是因为您收到 datetime 作为对象。因此,为什么错误说'datetime.datetime object 没有属性“拆分”。您正在尝试在对象上运行基于字符串的方法。

    尝试先使用str() 将结果中的数据转换为字符串。然后在上面运行你的函数。

    【讨论】:

    • 我将~/.local/lib/python2.7/site-packages/mysql/connector/conversion.py line 506(date_, time_) = value.split(b' ') 编辑为(date_, time_) = str(value).split(b' '),它似乎正在工作。我不确定,这会是mysql-connector 中的错误吗?
    • 在尝试打印结果后,我得到了:{u'lastheal': datetime.datetime(2019, 10, 29, 10, 22, 13), u'idplayer': 13, u'idstatus': 1, u'lastencounter': None, u'nameplayer': u'Dude', u'idopponent': None}。这是否意味着我可以将player['lastheal'] 当作普通的python datetime 对象来操作?
    • 在进行更多研究时,它看起来可能是一个错误。我不确定你现在将如何操纵player['lastheal'],但值得一试!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-20
    • 2019-04-25
    • 2022-01-24
    • 1970-01-01
    • 1970-01-01
    • 2013-08-20
    • 1970-01-01
    相关资源
    最近更新 更多