2012-11-15 16 views
0

我有以下get_db()功能,我用它來得到我的SQLite數據庫:檢查行存在_app_ctx瓶的SQLite

def get_db(): 
    top = _app_ctx_stack.top 
    if not hasattr(top, 'sqlite_db'): 
     top.sqlite_db = sqlite3.connect(app.config['DATABASE']) 
    return top.sqlite_db 

我相信我是個不使用Python SQLite的光標位置。如果我做以下事情:

db = get_db() 
db.execute('DELETE FROM table_name WHERE id=3') 
db.commit() 

如何檢查ID是否存在於DELETE中?我試圖在sqlite3.Cursor中使用rowcount,但這不符合我在這裏檢索我的數據庫的方式。

我該如何檢查?如果傳遞的ID不存在,我需要它返回404。

謝謝

+0

那你爲什麼不用光標? –

+0

這整個get_db函數是不是多餘的呢? – darksky

+0

你仍然需要數據庫對象來獲取光標。 –

回答

0

爲什麼不先查詢ID並拋出404如果不存在。例如:

cur = g.db.query('select * from table_name where id=3') 
if cur.rowcount <= 0: 
* abort(404) 
''Run delete command here'' 
+0

是的,只是發現了fetchone,fetchall和rowcount只有在SELECT後才起作用。 – darksky