python sqlite3中的“无此类列错误”

时间:2019-11-03 17:53:41

标签: python-3.x sqlite

尝试插入值时出现错误。

这是用于在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

1 个答案:

答案 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