>>> import MySQLdb
>>> db = MySQLdb.connect( host = "localhost", user ="root", passwd = "", db = "smoky_db" )
>>> cur = db.cursor()
>>> cur.execute( 'SELECT * FROM logs' )
3L
>>> rows = cur.fetchall()
>>> rows
((1L, datetime.datetime(2014, 5, 21, 0, 0)), (1L, datetime.datetime(2014, 5, 22, 0, 0)) )
如何将返回的对象元组转换为字符串元组,如下所示:
(('1', '2014-05-21 00:00:00'), ('2', '2014-05-22 00:00:00'))
答案 0 :(得分:3)
只需重复项目并将它们转换为元组,就像这样
print tuple(tuple(str(item) for item in items) for items in d)
# (('1', '2014-05-21 00:00:00'), ('1', '2014-05-22 00:00:00'))
这里我们使用了两个生成器表达式。将对原始元组中的每个项执行最里面的一个(str(item) for item in items
)。当嵌套项被字符串化时,我们迭代生成器表达式并再次将其转换为元组。
答案 1 :(得分:2)
在每个元素上调用str
:
>>> [tuple(map(str, tup)) for tup in tups]
[('1', '2014-05-21 00:00:00'), ('1', '2014-05-22 00:00:00')]
这是有效的,因为datetime
个对象实现了__str__
方法,由str
函数调用。来自documentation:
对于日期d,str(d)相当于d.isoformat('')。
答案 2 :(得分:1)
这应该可以解决问题:
out = tuple((str(k),str(v)) for (k,v) in rows)