我有以下功能:
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值分配给输入的username = userdetails username的行中的变量idvalue
,但是当我使用此fetchall()时,我会打印[('0',)]
而不仅仅是0
。
我该怎么做?
由于
答案 0 :(得分:1)
如果您只想要一个值,则可以使用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注入的攻击。</ p>
idvalue = c.execute("""SELECT ID FROM userdetails WHERE username = ?""", (username,)).fetchone()