如何将 table 上的 fetchall() 的输出限制为仅值?

How do I confine the output of a fetchall() on my table to just the value?

我有以下功能:

def credential_check(username, password):
            conn = sqlite3.connect('pythontkinter.db')
            c = conn.cursor()
            idvalue = c.execute('''SELECT ID FROM userdetails WHERE username = "{0}"'''.format(username)).fetchall()
            print(idvalue)

我希望将 userdetails table 中的 ID 值分配给输入用户名 = userdetails 用户名的行中的变量 idvalue,但是当我使用此 fetchall() 时,我得到[('0',)] 打印出来而不仅仅是 0

我该怎么做?

谢谢

如果您只需要一个值,可以使用 fetchone()。但是,结果仍将作为元组返回,只是没有列表。

import sqlite3

conn = sqlite3.connect('test.db')
c = conn.cursor()

c.execute('''CREATE TABLE IF NOT EXISTS testing(id TEXT)''')
conn.commit()

c.execute("""INSERT INTO testing (id) VALUES ('0')""")
conn.commit()

c.execute("""SELECT id FROM testing""")
data = c.fetchone()
print data
# --> (u'0',) 

如果您想用 fetchall() 限制返回值的数量,您也可以使用 LIMIT

更重要的是,不要这样格式化您的查询。习惯使用 ? 占位符作为一种习惯,这样您就不会受到 SQL 注入的攻击。

idvalue = c.execute("""SELECT ID FROM userdetails WHERE username = ?""", (username,)).fetchone()