【问题标题】:Searching for string in sqlite database在 sqlite 数据库中搜索字符串
【发布时间】:2018-01-10 20:14:17
【问题描述】:

我目前正在为我正在做的项目制作登录系统。我想将用户名作为唯一标识符,并且我想查询该表以确保它尚未被使用。当我打印IdExists 时,即使用户名已在使用中,它也会返回“无”。我有什么方法可以查询数据库然后得到一个真/假或告诉我用户名是否存在的东西?谢谢。

def NameInUse(Username):
cursor.execute('SELECT * FROM Users WHERE UserID =(?)',('%'+Username+'%',))
IdExists=cursor.fetchone()
if IdExists==True:
    LoginScrn.addLabel('Error','Username already in use')
    return True
else
    return False   

【问题讨论】:

  • 删除%
  • 为什么不根据用户名索引列?更快的查找并防止重复? sqlitetutorial.net/sqlite-index
  • 通过使用 %username% 检查,您可以防止任何人使用属于现有用户名的用户名。即如果我已经注册了用户“Tomas123”,你就不能再注册用户“Tom”了。此外,如果“Tom”已经存在,您应该比较两个大写的用户名以避免注册“tom”、“ToM”等

标签: python database search sqlite


【解决方案1】:

从参数规范中删除每个'%'()s。代替'%',提供一个元组:

def NameInUse(Username):
   data = list(sqlite3.connect('tablename.db').cursor().execute('SELECT * FROM Users WHERE UserId = ?', (username,)))
   return bool(data)

【讨论】:

  • @VictoriaWorthington 很高兴为您提供帮助!
猜你喜欢
  • 2021-02-21
  • 2017-01-18
  • 1970-01-01
  • 1970-01-01
  • 2021-01-22
  • 1970-01-01
  • 2010-10-13
  • 2014-07-28
  • 1970-01-01
相关资源
最近更新 更多