2016-09-02 68 views
0

一個怎樣給定值檢查SQLite數據庫整列,如果發現設置爲truePython的檢查SQL數據庫列值

hasvalue = 'false' 

cur = con.cursor() 
cur.execute("SELECT id FROM column WHERE hasvalue = '1' LIMIT 1;") 
***IF execute returned rows set hasvalue = true here*** 

if hasvalue == 'true': 
    do something 
else: 
    dosomethingelse 

可變我怎麼會做hasValue的如果sql查詢返回的東西,如果返回0行保持爲false,轉向真?

基本上我只希望如果事情在一列等於1

+0

所以,你想用python來做,或者用SQL做,因爲SQL-QUerry也可以做到。 –

+0

python,因爲我想要執行一些代碼,只有當數據庫爲我的搜索返回true –

+0

所以做一個適當的SQL如: 'SELECT 1 FROM WHERE = ;' 現在只需使用** fetch **,如果這個值爲零就會返回NULL,否則返回1 –

回答

0

我對你的問題有點困惑執行的東西。 SQL查詢表明您正在使用名爲column?如果我可以忽略它,並假設你有一個名爲test的表,它有id(一個int)和name(一個字符串)列。那麼查詢:

SELECT id FROM test where name = 'something' 

將選擇具有name設置爲字符串'something'所有行。

在Python,這將是:

cur = con.cursor() 
cur.execute("SELECT id FROM test where name = 'something' LIMIT 1") 

if cur.fetchone(): 
    do_something() 
else: 
    do_something_else() 

這裏的關鍵是使用cursor.fetchone()將嘗試從遊標檢索行。如果沒有行fetchone()將返回None,並且當作爲if語句中的條件使用時,None的計算結果爲False

你可以創建一個函數來概括:

def has_value(cursor, table, column, value): 
    query = 'SELECT 1 from {} WHERE {} = ? LIMIT 1'.format(table, column) 
    return cursor.execute(query, (value,)).fetchone() is not None 

if has_value(cur, 'test', 'name', 'Ranga'): 
    do_something() 
else: 
    do_something_else() 

此代碼爲給定的表,列,和值的查詢,並返回True如果至少有一排用所需的值,否則返回False

+0

如果不是cur.fetchone()就是我正在尋找的東西。非常感謝您的詳細解釋! –