【问题标题】:Trying to search a column on SQLite Python so that it only returns the information searched尝试在 SQLite Python 上搜索列,以便它只返回搜索到的信息
【发布时间】:2024-05-29 12:55:01
【问题描述】:

Python 和数据库新手

我有一个数据库表,其中包含一列用户名。我希望用户能够通过 raw_input 搜索表,并且只返回与该用户名关联的值。

例如用户搜索Bill,只显示Bill按指定列排序的记录

这是我目前所拥有的,但显然非常错误,希望有人能提供帮助:

def find_me(db, column_name):
    db = sqlite3.connect(db)
    cursor = db.cursor()
    name = raw_input("Please enter your username: ")
    cursor.execute("SELECT name FROM username WHERE name=?", (name,))
    cursor.execute("SELECT * FROM username ORDER BY "+column_name+" ASC")
    name = cursor.fetchone()
    next = cursor.fetchone()

提前谢谢你

【问题讨论】:

  • 这里出了什么问题,你想要什么?
  • 当用户搜索时,它似乎显示了所有用户,而不是仅仅隔离他们搜索的名称 (raw_input) 并仅从表中显示他们的详细信息。我想要它,以便用户可以根据姓名输入仅搜索他们的信息

标签: python database sqlite


【解决方案1】:

您希望查询类似于以下内容:

cursor.execute("SELECT name FROM username WHERE name=?", (name,))

这使用查询参数,因此对于提供的数据,它已正确转义。然后将其调整为 SELECT * 以及您想要从结果中获得的任何其他内容。


尝试使用这个:

name = raw_input("Please enter your username: ")
query = "SELECT * FROM username WHERE name=? ORDER BY {0}".format(column_name)
cursor.execute(query, (name,))
for row in cursor:
    print row

【讨论】:

  • 感谢您回复我,我已在您说的部分添加,但仍然无法正常工作。我编辑了上面的代码,你能正确检查它的输入吗?只做了几天数据库,所以才开始掌握它。再次感谢
  • @user1847644 稍作更新,展示了一个循环遍历结果的简单示例...
  • 这似乎有效,但它只显示用户输入之一。知道为什么会这样吗?
  • 忽略最后一条评论。这样可行!!。非常感谢,困扰我太久了!