如何将 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()
我有以下功能:
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()