Python检查sql数据库列的值

时间:2016-09-02 01:16:18

标签: python database sqlite

如何检查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

时执行某些操作

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()将返回NoneNoneFalse语句中用作条件时评估为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