如何将mysql连接器SELECT结果“ datetime.date(2019,3,11)”转换为'11 / 03/2019'

时间:2019-11-30 23:18:09

标签: mysql-python mysql-connector-python

使用Python 3.7.3和mysql-connector 8.0.18,我的SELECT结果如下:

[['2019-001', datetime.date(2019, 3, 11), 'Services']]

我希望结果看起来像这样:

[['2019-001', '11/03/2019', 'Services']]

代码段:

...
table = 'Customer'
select = "SELECT * FROM %s"
cursor.execute(select % table)
for row in cursor:
    append_list = list(row)
    import_list.append(append_list)                        
print(import_list)  #import_list is actually a list of lists
...

我无法修改SELECT语句(使用... DATE_FORMAT(Date,'%d /%m /%Y')),因为我不知道何时/是否为DATE会遇到字段,或者当我遍历MySQL数据库中未知数量的表时遇到的字段名称。

我所做的调查显示了两种可能(据我所知):

  1. 遍历 import_list ,并进行某种日期时间格式化,例如:
datetime.date(2011, 1, 3).strftime("%d-%m-%Y") 

这似乎不是很优雅,但是如果那是我必须要做的,我需要弄清楚该怎么做。

  1. 我已经看到了有关创建某种mysql.connector.conversion.MySQLConverter类的参考。我也不知道该怎么做,但是如果这是最好的方法,我可以进一步调查。这似乎是一种很好的处理方式,因为它是在构建连接器的代码中完成的。

或者还有另一种Pythonic方式可以完成我想完成的事情?

1 个答案:

答案 0 :(得分:0)

您可以使用 strftime("%Y/%m/%d") 来格式化时间戳。例如:

cursor.execute(select % table)
result = cursor.fetchall()

print(result[0][1].strftime("%Y/%m/%d")) # should give you the timestamp in the format you desire