如何在 cur.execute 中使用 python 返回有效的时间戳值

Posted

技术标签:

【中文标题】如何在 cur.execute 中使用 python 返回有效的时间戳值【英文标题】:how to return valid timestamp value using python in cur.execute 【发布时间】:2021-11-03 11:45:46 【问题描述】:

使用python日期时间格式读取和返回sql查询结果时,时间戳值中包含T。请您提出您的建议。

con = mysql.connector.connect(host=host, user=username, password=password, database=db_name,port=port)
cur = con.cursor()
sqlquery = "select * from testtable"
cur.execute(sqlquery)
result_output = [dict((cur.description[i][0], value) for i, value in 
                enumerate(row)) for row in cur.fetchall()]
return JsonResponse("result":result_output, safe=False)

Print result : `['tabId': 1, 'tab_int': 100, 'tab_char': 'test5', 'tab_decimal': Decimal('99.54'), 'tab_date': datetime.date(2021, 8, 16), 'tab_timestamp': datetime.datetime(2021, 8, 16, 23, 30, 48)]`

返回结果

“结果”: [ “标签”:1, “tab_int”:100, "tab_char": "test5", "tab_decimal": "99.54", "tab_date": "2021-08-16", “tab_timestamp”:“2021-08-16T23:30:48” ]

需要的输出是"tab_timestamp": "2021-08-16 23:30:48"

【问题讨论】:

【参考方案1】:

您可以遍历响应数据并重新格式化您想要的类型。要以任何方式格式化数据/日期时间对象,请使用strftime (https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes):

from decimal import Decimal
import datetime

data = ['tabId': 1, 'tab_int': 100, 'tab_char': 'test5',
    'tab_decimal': Decimal('99.54'), 'tab_date': datetime.date(2021, 8, 16),
    'tab_timestamp': datetime.datetime(2021, 8, 16, 23, 30, 48)]

for key, value in data[0].items():
    if isinstance(value, datetime.datetime):
        data[0][key] = data[0][key].strftime("%Y-%m-%d %H:%M:%S")
    elif isinstance(value, datetime.date):
        data[0][key] = data[0][key].strftime("%Y-%m-%d")

print(data)

【讨论】:

以上是关于如何在 cur.execute 中使用 python 返回有效的时间戳值的主要内容,如果未能解决你的问题,请参考以下文章

如何确定 Python 中集合变量的大小?

Python 个使用 pymysql 1.0.2 版本 无法使用 execute 函数?

如何在 Python Impala 中编写 FOR 循环?

各位大神,我在python代码中,执行下面代码中总是报错,请问 如何在pysqlite中 执行下列命令呢?谢谢

Python 通

Python中应用SQL及SQLAlchemy