2017-04-12 70 views
0

很高興見到大家。 我是Python新手,對PHP有一定的經驗。使用PHP我創建了一個待辦事項列表程序。完成之後,我決定用Python cgi編寫相同的程序來檢查它會有多不同。但是因爲我對Python真的很陌生,所以我暫時停下了關於如何刪除一行的基本知識。如何用Python cgi從數據庫獲取特定部分的信息?

<?php 

require_once 'init.php'; 

if(isset($_GET['item'])){ 

    $id = $_GET['item']; 

    if(!empty($id)){ 
     $deleteQuery = $db->prepare(" 
      DELETE 
      FROM items 
      WHERE id=:id 
     "); 

     $deleteQuery->execute([ 
      'id' => $id 
     ]); 

    } 

}; 

header('Location:webPHP.php'); 

隨着PHP是簡單的檢索行的特定部分,但我怎麼能做到這一點並確認它不是空的使用Python?

+0

SQL,SQLite的,別的東西嗎?使用MySQL的 –

+0

WAMP服務器 – Vidma

+0

我沒有MySQL的這臺電腦上運行,因此不能提供一個直接的答案。如果您要搜索「**」python cgi mysql **,您將獲得一組結果,其中一些結果可能會有用。事實上http://stackoverflow.com/questions/22443209/returning-output-of-python-cgi-mysql-script也許夠你。如果'cursor.fetchall'的結果是空的(即'None'),那麼你知道你在SQL select中指定的行不存在。 –

回答

0

我不記得這個問題的答案。這很可能與sqlite發生的情況類似,在這種情況下,您可能會從以下獲益。本質上,一些Python庫會將從SQL進入的NULL更改爲Python可理解的無。

import sqlite3 

import os 
os.chdir('c:/scratch') 

conn = sqlite3.connect('temp.sqlite') 
conn.row_factory = sqlite3.Row 
c = conn.cursor() 

c.execute('''SELECT * FROM JustDate WHERE Date_1 = "1970-01-23"''') 

for row in c.fetchall(): 
    for key in row.keys(): 
     if row[key]: 
      print ('Field ', key, 'is not NULL (', row[key], ')') 
     else: 
      print ('Field ', key, 'is NULL') 

Field Date_1 is not NULL (1970-01-23) 
Field Date_2 is NULL 
Field Date_3 is not NULL (2014-08-17) 

這是一個雙記錄數據庫表。我選擇其中一條記錄並指出如何檢查字段的內容是否爲無。總之,如果你寫if <name>,<name>的計算結果爲非零值,一個非空字符串(或其他一些東西),那麼這個表達式的計算結果爲True。否則,錯誤。

+0

鑰匙代表什麼? – Vidma

+0

'row.keys()'是一個字典。 'key'只是一個形式變量,它假定字典中一組鍵值中的一系列值。它假定的每個值都是字典中的一個「鍵」。我可以使用任何標識符而不是'keys'。 –

+0

但根據您的示例,您可以選擇數據的特定部分。我需要訪問,我從其他 頁打印發送數據(「Delete」 .format(X [0])) – Vidma

相關問題