使用Python运行查询不会在MySQL中执行unixtime函数

时间:2013-11-22 07:43:50

标签: python mysql database unix-timestamp

我是Python新手(使用它编程的第二天)。我正在连接MySQL数据库并执行简单查询。从包目录中的SQL文件中检索查询。

SQL Query(test.sql):

SELECT
    `lastUpdated`,
    FROM_UNIXTIME(`lastUpdated`/1000) AS lastUpdated2
FROM database.table

Python代码:

#Connect to MySQL
db_src = MySQLdb.connect(host="host", user="user", passwd="pass", db="db")
cursor = db_src.cursor(MySQLdb.cursors.DictCursor)

def getData():
    script_file = open(os.path.abspath("SQL/test"),"r")
    script = script_file.read()

    cursor.execute(script)
    script_file.close()

    data = cursor.fetchall()

    count = 0

    for row in data:
        count += 1
        print (count.__str__()),
        for attr in cursor.description:
            print unicode(row[attr[0]]),

        print ""

getData()

输出不会将我的unix时间戳作为DateTimes返回(如果从SQL-Yog运行,则是预期的输出)。取代这些价值观,我得到的字是“无”。

输出:

37 1358842638006 None 
38 1358846200484 None 
39 1358848721741 None 
40 1358859525442 None 
41 1358931853983 None 
42 1359015289550 None 
43 1359378691868 None 
44 1359558816786 None 
45 1359641991480 None 
46 1359642003819 None 
47 1359642020226 None 
48 1359729663885 None 
49 1359731426736 None 
50 1359732074609 None 
51 1359956455460 None 
52 1359987432110 None 
53 1360055172005 None 
54 1360137976835 None 
55 1360212322371 None 
56 1374050402290 None 
57 1375887780000 None 
58 1381830309000 None 
59 1382034299000 None 
60 1382613529000 None  

为什么FROM_UNIXTIME无效?

编辑:解决方案

Python以错误的数据类型动态转换FROM_UNIXTIME的结果。因此,我在查询中使用强制转换来输出一个char结果,该结果由Python成功地转换为字符串。

SELECT
  lastUpdated,
  CAST((FROM_UNIXTIME(lastUpdated/1000)) AS CHAR) AS lastUpdated2
FROM database.table

1 个答案:

答案 0 :(得分:0)

88867351610262145/100088867351610262.1450,它对应于Mon Apr 7 07:17:42 UTC 2818064 - 超出了MySQL日期时间类型的范围,因此from_unixtime返回Null。