我的游标带有查询语句,如下所示:
cursor.execute("select rowid from components where name = ?", (name,))
我想检查组件的存在:名称并返回python变量。我怎么做?
由于name
s是唯一的,因此与我最初使用的建议相比,我真的更喜欢您(OP的)使用方法fetchone
或Alex
Martelli的使用方法。SELECT count(*)``fetchall
fetchall
将结果(通常是多行数据)包装在一个列表中。由于name
s是唯一的,因此fetchall
返回列表中只有一个元组的列表(例如,[(rowid,),]
或为空列表[]
。如果您想知道rowid
,则使用fetchall
要求您浏览列表和元组以到达rowid
。
fetchone
在这种情况下使用更好,因为您只会得到一行(rowid,)
或None
。要获得rowid
(假设有一个),您只需选择元组的第一个元素。
如果您不在乎特定内容,rowid
而只是想知道是否有点击,则可以使用Alex Martelli的建议SELECT count(*)
,该建议将返回(1,)
或(0,)
。
这是一些示例代码:
首先,通过一些样板代码来设置玩具方桌:
import sqlite3
connection = sqlite3.connect(':memory:')
cursor=connection.cursor()
cursor.execute('create table components (rowid int,name varchar(50))')
cursor.execute('insert into components values(?,?)', (1,'foo',))
使用fetchall
:
for name in ('bar','foo'):
cursor.execute("SELECT rowid FROM components WHERE name = ?", (name,))
data=cursor.fetchall()
if len(data)==0:
print('There is no component named %s'%name)
else:
print('Component %s found with rowids %s'%(name,','.join(map(str, next(zip(*data))))))
产量:
There is no component named bar
Component foo found with rowids 1
使用fetchone
:
for name in ('bar','foo'):
cursor.execute("SELECT rowid FROM components WHERE name = ?", (name,))
data=cursor.fetchone()
if data is None:
print('There is no component named %s'%name)
else:
print('Component %s found with rowid %s'%(name,data[0]))
产量:
There is no component named bar
Component foo found with rowid 1
使用SELECT count(*)
:
for name in ('bar','foo'):
cursor.execute("SELECT count(*) FROM components WHERE name = ?", (name,))
data=cursor.fetchone()[0]
if data==0:
print('There is no component named %s'%name)
else:
print('Component %s found in %s row(s)'%(name,data))
产量:
There is no component named bar
Component foo found in 1 row(s)
我需要检查一列是否存在,如果不存在,请添加它。根据我的研究,sqlite似乎不支持是否应该使用语句和case语句。 以下是我目前掌握的情况: 但我得到了一个错误:接近“ALTER”:语法错误。 有什么想法吗?
问题内容: 我有一个字符串数组,在插入它们之前需要检查表中是否存在这些字符串,以避免重复。什么是SQL查询,如何替换以下值?:) 我的产品型号: 表格名称: product_pics 数据库名称: product_db 我了解此声明将起作用: 如何正确格式化此格式,以使该方法在产品存在或不存在时返回? 问题答案: 只是喜欢
问题内容: 我想检查一个变量是否存在。现在我正在做这样的事情: 是否有其他方法无一例外? 问题答案: 要检查是否存在局部变量: 要检查是否存在全局变量: 要检查对象是否具有属性:
问题内容: 我有一列包含数字和其他字符串值(例如“?”,“ ???”等) 是否可以在SQLite的where子句中添加“ is number”条件?就像是: 问题答案: 从文档中, typeof(X)函数返回一个字符串,该字符串指示表达式X的数据类型:“ null”,“ integer”,“ real”,“ text”或“ blob”。 您可以使用
问题内容: 我需要帮助检查数据库中是否存在行。就我而言,该行包含一个电子邮件地址。我得到结果: 这是我当前正在使用的代码: 有没有更好的方法来检查MySQL中是否存在行(在我的情况下,检查MySQL中是否存在电子邮件)? 问题答案: 以下是经过尝试,测试和证明的检查行是否存在的方法。 (其中一些我自己使用,或者过去使用过)。 编辑: 我在使用两次的语法中犯了一个先前的错误。请查阅修订版本。 即:
我需要帮助检查数据库中是否存在行。在我的例子中,该行包含一个电子邮件地址。我得到的结果是: 这是我目前使用的代码: 有没有更好的方法来检查MySQL中是否存在行(在我的例子中,检查MySQL中是否存在电子邮件)?