我使用python和mySql,运行下面的查询:
sSql = "select id from table_name"
cursor.execute( sSql )
lrec = self.cursor.fetchall()
json.dumps( lrec )
并得到一条错误消息,因为我得到的是长整型符号'id' : 1L
而不是'id' : 1
解决这个问题的唯一方法是丑陋的:
sSql = "select cast(id as char(10)) as id from table_name"
有更好的方法吗?
谢谢,于尔根
您可以在lrec上循环并将所有的id
转换为int
。我不知道你的lrec是如何格式化的(即元组列表)。
no_longs = [int(my_id) for my_id in lrec]
多亏了johnthexiii的提示,我决定在jsondumping之前简单地修改结果。然而,我将所有内容都转换为字符串,因为JSON的使用者知道如何处理某些变量,并且只能使用字符串。通过这样做,我还避免了返回日期字段的问题,例如datetime.datetime(2013, 7, 2, 9, 18, 38)
ltpv = [ tpv for tpv in self.cursor ]
lk = [ ltpk[ 0 ] for ltpk in self.cursor.description ]
laResults = []
for tpv in ltpv:
aResult = {}
for k, v in zip( lk, tpv ):
aResult[ k ] = unicode( v )
laResults.append( aResult )
json.dumps( laResults )
感谢大家输入