[英]Query run with Python doesn't perform unixtime function in MySQL
我是Python的新手(使用它進行編程的第二天)。我正在連接MySQL數據庫並執行簡單的查詢。 從包目錄中的SQL文件檢索查詢。
SQL查詢(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
88867351610262145/1000
是88867351610262.1450
,它對應於Mon Apr 7 07:17:42 UTC 2818064
這超出了MySQL的datetime類型范圍,因此from_unixtime
返回Null。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.