2015-01-03 3 views
1

Я новичок в python и даже новичок в sql, но я пытался сделать эту работу все утро, и я не могу понять, как это понять. У меня есть таблица, называемая POSTS (id). Я пытаюсь проверить, находится ли номер уже в столбце id, но не имеет значения, какой номер postid существует, потому что данные никогда не возвращают ни одного, даже если postid установлен в число, не указанное в базе данных.Python: как проверить, существует ли запись в базе данных sql?

import sqlite3 as lite 
import sys 

con = lite.connect('post.db') 
postid = '52642' 

cur = con.cursor() 
cur.execute("select id from POSTS where id=?", (postid,)) 
data = cur.fetchall() 
if data is None: 
     print ('not found') 
else: 
     print ('found') 
+0

BTW, ' '52642'' не является числом; '52642' есть. Но вы, вероятно, будете спасены [сродством] (http://www.sqlite.org/datatype3.html#affinity). –

ответ

4

Заявление

data = cur.fetchall() 

будет назначить data пустой список, неNone, когда ничего не найдено.

Так просто изменить ваш чек:

if not data: 

вместо:

if data is None: 
+0

Аналогичным образом вы можете использовать 'if data == []' – Freestyle076

+0

@ Freestyle076, да, но 'if not data:' быстрее и, что не удивительно, больше идиомы Pythonic (реализация Python имеет тенденцию оптимизироваться, чтобы сделать больше идиоматических выражения быстрее). –

Смежные вопросы