[英]Check if X,Y column pair in table B is within delta distance of any X, Y column pair in table A
[英]check if value Y in column Z in table X
我想編寫一個函數來檢查表X在Z列中是否具有值Y的行。如果滿足此條件,則返回True,否則返回False。
我編寫以下函數:
def valueInDatabase(cursor,value,table, col):
check = cursor.execute("""SELECT %s from %s"""%(col,table))
result = cursor.fetchall()
if value in result:
return True
else:
return False
然后使用以下代碼測試我的功能:
conn = sqlite.connect(":memory:")
cursor = conn.cursor()
cursor.execute("CREATE TABLE problem1 (x int unique)""")
cursor.executemany("INSERT INTO problem1(x) VALUES (?)",[(1,),(2,),(3,),(4,)])
print valueInDatabase(cursor,5,'problem1','x')
print valueInDatabase(cursor,2,'problem1','x')
它顯示“ false”和“ false”,但應顯示“ true”和“ false”。 有人可以幫助我修復代碼嗎?
我添加了print result
,它顯示結果中充滿了元組。 因此,我相應地更新了您的if
語句。
def valueInDatabase(cursor,value,table, col):
check = cursor.execute("""SELECT %s from %s"""%(col,table))
result = cursor.fetchall()
print result # returns [(1,), (2,), (3,), (4,)]
# So we should check for the tuple, value, like this:
if (value,) in result:
return True
else:
return False
要檢查某行的某列中是否有值,您的檢查應類似於:
if value in row[col]:
同樣,您執行一個result = cursor.fetchall()
,它返回結果行的迭代器。 我相信您應該循環檢查。
我寧願使用SQL功能,而不是從表中獲取所有記錄。
def valueInDatabase(cursor,value,table, col):
check = cursor.execute(
"SELECT COUNT(*) from {} WHERE {} = ?".format(col, table),
[value])
row = cursor.fetchone()
return row[0] > 0
?
應該根據您使用的DB-API模塊用正確的占位符標記替換。
邊注
如上例所示:
if condition:
return True
else:
return False
可以替換為:
return condition
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.