python-3.x - 在 sqlite3 中使用用户输入(python 3.7)
问题描述
嘿伙计们,我现在正在处理一项任务,我正在尝试添加一个登录功能,该功能询问用户他们的用户名,然后查看他们的输入是否与数据库中的任何内容匹配。抱歉编码不好,这是我的第二年,我在 10 年级。
import sqlite3
db = sqlite3.connect('library.db')
cursor = db.cursor()
result = cursor.fetchall
def login():
user = input("VAT IS YAH USERNAM: ")
pastuser = user
user = ("%" + user + "%")
cursor.execute("SELECT username FROM Users WHERE username LIKE " + user)
result = cursor.fetchall()
if result == pastuser:
print("VAT IS YAH PASWRD")
login()
解决方案
尽管没有提供问题,但您的SELECT
语句出现语法错误,因为它在符号"
之间丢失所以更改%
LIKE
user = ("%" + user + "%")
至
user = ("\"%" + user + "%\"")
此外,您正在比较result
,pastuser
但结果是一个元组列表,其中包含从 中返回的所有元组SELECT
,如果您只想检查第一个用户遇到的变化
if result == pastuser:
至
if result[0][0] == pastuser:
或者您可以更改返回单个元组的fetchall
方法。fetchone
如果要遍历所有用户:
for u in result:
...
推荐阅读
- vue.js - 如何在Vue Js中将数组项移动到另一个数组中
- android - 使用 Kotlin 获取 Android 应用程序列表
- javascript - Sortablejs根据与边缘的距离自动滚动速度
- csv - 如何在颤动中显示或加载 CSV 文件中的数据到列表中
- android - Android Studio 关于已弃用 API 的警告
- javascript - 如何避免警告:无法在未安装的组件上设置状态?反应原生
- python - 为什么我的 try-exception-finally 无法正常工作
- angular - Angular 8/9 如何以编程方式将焦点设置在 MatInput 上
- pandas - Teradata 插入错误:ValueError:DataFrame 的真值不明确
- javascript - 使用 Moment 使用 Electron/NodeJS 将标准时间格式化为 ISO 8601