我正在尝试在系统中创建一个用户输入密钥的时钟,并将其与sqlite数据库进行比较。
我遇到的问题是将输入的密钥与数据库中输入的密钥进行比较。我假设这是因为sqlite查询返回一个元组。我认为将它放入for循环可以解决它。虽然他们匹配,但他们回来是假的。
import sqlite3 as lite
conn = lite.connect('attendance.db')
c = conn.cursor()
r = raw_input('Awaiting Key: ')
keyCode = str(int(r))
q = c.execute("SELECT key FROM employees WHERE key = '%s'") % keyCode
for i in q:
if i == r:
print 'open'
else:
print 'closed'
答案 0 :(得分:0)
q = c.execute("SELECT key FROM employees WHERE key = '%s'") % keyCode
如果我纠正,这是错误的。 你需要这样做:
c.execute("SELECT key FROM employees WHERE key =?", (keyCode,))
c.fetchone()
返回您需要的值。
答案 1 :(得分:0)
不要使用字符串插值将数据插入查询。查询参数更有效,并且不易受到注入攻击。
q = c.execute("SELECT key FROM employees WHERE key = ?", (keyCode,))