技術討論區 > Python程式設計討論區

python的datetime格式資料如何轉為json可接受的資料呢

(1/2) > >>

Quota:
我從sqlite3讀取資料,想在python3.4內轉為json
可是這資料裡有dateime格式資料..執行時出現
AttributeError: 'tuple' object has no attribute 'date1'

我在網路上也試著做各種處理,但仍無法解決問題,所以想請問前輩,我的語法哪裡有錯?

我的程式語法如下

import sqlite3
import sys
import json
import time
db = sqlite3.connect('flag.db')
cursor = db.cursor()
cursor.execute('''SELECT datetime as date1,f1,f2 FROM data ORDER BY datetime desc limit 10''')
user1 = cursor.fetchone() #retrieve the first row
all_rows = cursor.fetchall()
for row in all_rows:
    #py_date = row.date1.datetime(row.date1)
    d['date'] = row.date1.strftime("%Y-%m-%d %H:%M:%S")
    #tm = row.datetime.strptime("%Y-%m-%d %H:%M:%S")
    t = (d['date'],row.f1,row.f2)
    rowarray_list.append(t)
j = json.dumps(rowarray_list)
print(j)

我的資料,共計十筆,我寫了一隻程式如下
import sqlite3
import sys
db = sqlite3.connect('flag.db')
cursor = db.cursor()
cursor.execute('''SELECT datetime,f1,f2 FROM data ORDER BY datetime desc limit 10''')
user1 = cursor.fetchone() #retrieve the first row
all_rows = cursor.fetchall()
for row in all_rows:
    # row[0] returns the first column in the query (name), row[1] returns email column.
    print('{0} : {1}, {2}'.format(row[0], row[1], row[2]))
   
可顯示如下
2014-05-03 10:57:34 : 25.4, 60.0
2014-05-03 10:57:24 : 25.5, 60.0
2014-05-03 10:57:14 : 25.4, 60.0
2014-05-03 10:57:04 : 25.4, 60.0
2014-05-03 10:56:54 : 25.4, 60.0
2014-05-03 10:56:44 : 25.3, 60.0
2014-05-03 10:56:34 : 25.3, 60.0
2014-05-03 10:56:23 : 25.3, 60.0
2014-05-03 10:56:13 : 25.3, 60.0

目前卡在第一個欄位資料無法轉為json資料
煩請各位協助
謝謝

darkranger:
沒處理過類似需求
但我還真的完全看不懂這段程式碼
1.
有沒有查過 row 出來是什麼資料型態?
2.
datetime()、strftime()、strptime() 等函式無中生有,怎麼來的?

Quota:

--- 引述: darkranger 於 2014-11-21 16:01 ---沒處理過類似需求
但我還真的完全看不懂這段程式碼
1.
有沒有查過 row 出來是什麼資料型態?
2.
datetime()、strftime()、strptime() 等函式無中生有,怎麼來的?

--- 引用結尾 ---

資料庫內的資料 這三個欄位分別為 datetime float float
請問要如何檢查row出來的資料型態?
sqlite不分型態  不過資料一開始是在mysql 所以格式是這樣...
還是sqlite讀取出來是字串 可是
python執行後的錯誤訊息是
AttributeError: 'tuple' object has no attribute 'date1'
所以資料不是當字串使用?

另外請教 我想我是不太會查資料
python網站上關於 strftime() 
   https://docs.python.org/2/library/datetime.html#strftime-and-strptime-behavior
我看不出來他是屬於哪一個需要import項目
可否再多一些提醒?
畢竟現在資料可以撈出了 就卡在日期時間的轉換..
或者麻煩前輩多一點提示..我可以試著解決問題..
最後一哩路了..謝謝!

darkranger:
SQL 的 datetime 跟 Python 的 datetime 是兩回事
前者是資料型態,後者是一種可載入(import)的模組

出來的 row 是 tuple 型態,tuple 是一種陣列,接下來就是用陣列的邏輯處理
如果陣列的內容是字串,就接著用字串的邏輯處理成想要的結果



Quota:
不好意思 經由前輩指點  給我些提示  我發現我被誤導?
修改後可以跑 修改後的語法如下
import sqlite3
import sys
import json
import time
db = sqlite3.connect('flag.db')
cursor = db.cursor()
cursor.execute('''SELECT datetime as date1,f1,f2 FROM data ORDER BY datetime desc limit 10''')
user1 = cursor.fetchone() #retrieve the first row
all_rows = cursor.fetchall()
rowarray_list = []
for row in all_rows:
    #py_date = row.date1.datetime(row.date1)
    #d['date'] = row[0].strftime("%Y-%m-%d %H:%M:%S")
    #tm = row.datetime.strptime("%Y-%m-%d %H:%M:%S")
    #t = (d['date'],row[1],row[2])
    t = (row[0]+','+str(row[1])+','+str(row[2]))
    rowarray_list.append(t)
j = json.dumps(rowarray_list)
print(j)

導覽

[0] 文章列表

[#] 下頁

前往完整版本