我是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
答案 0 :(得分:0)
88867351610262145/1000
是88867351610262.1450
,它对应于Mon Apr 7 07:17:42 UTC 2818064
- 超出了MySQL日期时间类型的范围,因此from_unixtime
返回Null。