尝试插入值时出现错误。
这是用于在sqlite3数据库中存储用户的用户ID和密码。
import sqlite3, hashlib
conn = sqlite3.connect('user.db')
a = input("Enter id:")
b = input("Enter password:")
b = str.encode(b)
b = hashlib.sha224(b).hexdigest()
conn.execute("insert into user(id,pass) values(%s, %s);"%(a,b))
print("Done")
创建语句为:
CREATE TABLE user(id varchar[50], pass varchar[50])
当我尝试输入值A(id)和a(密码)时,出现以下错误:
conn.execute("insert into user(id,pass) values(%s, %s);"%(a,b))
sqlite3.OperationalError: no such column: A
答案 0 :(得分:1)
您必须使用占位符作为参数。
因此您的代码将变为:
conn.execute("insert into user(id,pass) values(? , ?);" , (a,b))
由于SQL注入的高风险,另一个不好 实践的解决方案是:
conn.execute("insert into user(id,pass) values('%s', '%s');"%(a,b))
SQLite3 Python模块文档:
https://docs.python.org/3/library/sqlite3.html#sqlite3.Cursor.execute