簡體   English   中英

使用Python運行的查詢在MySQL中不執行unixtime函數

[英]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/100088867351610262.1450 ,它對應於Mon Apr 7 07:17:42 UTC 2818064這超出了MySQL的datetime類型范圍,因此from_unixtime返回Null。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM