2015-12-02 116 views
-1

我想做一個python文件,連接到我的小型數據庫,將檢索溫度和溼度取決於在html表單中設置的日期和時間。從python獲取數據從sqlite

<script> 
    $(function() { 
    $("#dateValue").datepicker(); 
    }); 
    </script> 
    </head> 
    <body> 

    <form name="myForm" method="post" action="/cgi-bin/script1.py"> 
    <p>Date: <input type="text" name="dateValue" id="dateValue"></p> 
    <p>Time: <select name="timeValue" id="timeValue"> 
     <option value="0">--All Day--</option> 
     <option value="01">1am</option> 
     <option value="02">2am</option> 
     <option value="03">3am</option> 
     <option value="04">4am</option> 
     <option value="05">5am</option> 
     <option value="06">6am</option> 
     <option value="07">7am</option> 
     <option value="08">8am</option> 
     <option value="09">9am</option> 
     <option value="10">10am</option> 
     <option value="11">11am</option> 
     <option value="12">12am</option> 
     <option value="13">1pm</option> 
     <option value="14">2pm</option> 
     <option value="15">3pm</option> 
     <option value="16">4pm</option> 
     <option value="17">5pm</option> 
     <option value="18">6pm</option> 
     <option value="19">7pm</option> 
     <option value="20">8pm</option> 
     <option value="21">9pm</option> 
     <option value="22">10pm</option> 
     <option value="23">11pm</option> 
     <option value="24">12pm</option> 
    </select> 
     <input type="submit" value="Enter"/> 
    </form> 

所以一旦輸入數據他們應該連接到一個數據庫,其名稱爲readings.db並連接到的具有以下結構的表天氣

ID dateReading timeReading 溫度 溼度

如何連接到數據庫僅檢索窗體中選定日期和時間的溫度和溼度。我如何做到這一點,如果他們選擇了上午10點它選擇所有的溫度和溼度在上午10點,從上午10點到上午11點類型的東西。並且如果那時沒有數據庫中的日期或時間,則表示沒有找到日期和時間的數據。

這是我的腳本到目前爲止

#!/usr/bin/python 
import sqlite3 as lite 
import sys 
import cgi, cgitb 

form = cgi.FieldStorage() 

dateValue = form.getvalue('dateValue') 
timeValue = form.getvalue('timeValue') 

con = lite.connect('readings.db') 

with con: 
    cur = con.cursor() 
    cur.execute('SELECT temperature, humidity FROM weather WHERE dateReading = dataValue AND timeReading = timeValue') 

rows = cur.fetchall() 

for row in rows: 
    print row 

print "Content-type:text/html\r\n\r\n" 
print "<html>" 
print "<head>" 
print "<title>Hello - CGI Program</title>" 
print "</head>" 
print "<body>" 
print "<h2>received from the form %s %s</h2>" % (dateValue, timeValue) 
print "</body>" 
print "</html>" 

最後豆蔻位更是一個測試,以確保我是從根據您的意見形式

+0

它,而取決於如何將數據如何存儲在數據庫中,如果它在日期時間格式,你將不得不選擇DATEVALUE轉換成您可以使用它之前的相同類型。如果你爲表'weather'顯示數據庫模式(結構)並且說datevalue是python datetime對象,或者至少告訴我們它是如何表示的,這可能會有所幫助。顯然時間是一個數字字符串。 –

+0

數據庫中的數據結構與表格 –

+0

收到的結構相同。在數據庫中,'dateReading'定義爲'datetime','int','text'等,並且'timeReading'定義爲'int' ,「浮動」,「文字」?這很重要,因爲你必須像like一樣比較。對於輸入數據,嘗試輸出'type(dateValue)'和'type(timeValue)'的值,它會告訴你它們是如何被接收的。一旦你知道了輸入數據和數據庫中的兩個項目的數據類型,你就有機會實現你的目標。 –

回答

0

只要獲取的數據作爲輸入文本與數據庫中的文本對象具有相同的格式,那麼日期就是它的內容。
你唯一的問題是時間。我建議你將inputTime轉換爲一個整數,然後將其加1並將其轉換回一個字符串。

use_time = int(inputTime) 
finish_time = use_time + 1 
start_time = str(use_time) 
finish_time = str(finish_time) 

那麼你的select語句應該是這樣的:

cur.execute('SELECT temperature, humidity FROM weather WHERE dateReading = dateValue and timeReading >= start_time and timeReading < finish_time')