我有以下功能:
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 表中的 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',)
您还可以使用 LIMIT
如果您想使用 fetchall()
限制返回值的数量。
更重要的是,不要这样格式化您的查询。习惯使用 ?
占位符,这样您就不会受到 SQL 注入(inject)攻击。
idvalue = c.execute("""SELECT ID FROM userdetails WHERE username =?""", (username,)).fetchone()
关于python - 如何将我表上的 fetchall() 的输出限制为仅值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42224455/