如何检查sqlite数据库中的整个列是否有给定值,如果找到则将变量设置为true
类似
FROM ClaimSet cs INNER JOIN
ClaimSetOrder cso
ON cso.ClaimSetID = cs.ClaimSetID INNER JOIN
OrderLineItem oli
ON oli.OrderLineItemID = cso.OrderLineItemID
如果sql查询返回某个东西并且如果返回0行保持为假,我将如何使hasvalue变为true?
基本上我只想在列中的某些内容等于1
时执行某些操作答案 0 :(得分: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
,None
在False
语句中用作条件时评估为if
。
你可以创建一个概括的函数:
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
。