Python 当LIKE变量/模式可以更改时,如何向SQL查询(?,%?%,…)
首先,如果我没有使用正确的术语,我很抱歉,这是我唯一参加的编程课程,我是法国人。我想用Python制作一个应用程序,在其中输入游戏类别和其他信息,以查找符合标准的游戏。然后应用程序在SQL数据库中搜索。问题在于,由于它将是一款图形应用程序,因此该类别随时可能发生变化。所以我想把它作为一个例子?在我的SQL查询中,然后用用户条目填充它,但通过这种方式,它只会找到只有一个类别的游戏,我在它们的类别描述中写道,有些游戏有不止一个类别Python 当LIKE变量/模式可以更改时,如何向SQL查询(?,%?%,…),python,sql,database,Python,Sql,Database,首先,如果我没有使用正确的术语,我很抱歉,这是我唯一参加的编程课程,我是法国人。我想用Python制作一个应用程序,在其中输入游戏类别和其他信息,以查找符合标准的游戏。然后应用程序在SQL数据库中搜索。问题在于,由于它将是一款图形应用程序,因此该类别随时可能发生变化。所以我想把它作为一个例子?在我的SQL查询中,然后用用户条目填充它,但通过这种方式,它只会找到只有一个类别的游戏,我在它们的类别描述中写道,有些游戏有不止一个类别 query = (''' SELECT "attri
query = ('''
SELECT "attributes.boardgamecategory", "details.name", "details.description" FROM BoardGames
WHERE "details.maxplayers" <= ?
AND "details.maxplaytime" <= ?
AND "game.type" = 'boardgame'
AND "attributes.boardgamecategory" LIKE ?
ORDER BY RANDOM() LIMIT 1
''')
cur.execute(query, (max_players, max_playtime, 'Adventure'))
因此,我尝试将“?”替换为“%”,但无效:
query = ('''
SELECT "attributes.boardgamecategory", "details.name", "details.description" FROM BoardGames
WHERE "details.maxplayers" <= ?
AND "details.maxplaytime" <= ?
AND "game.type" = 'boardgame'
AND "attributes.boardgamecategory" LIKE '%?%'
ORDER BY RANDOM() LIMIT 1
''')
cur.execute(query, (max_players, max_playtime, 'Adventure'))
>>>sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 2, and there are 3 supplied.
我不知道还能尝试什么。请帮帮我 您应该将%something%绑定到类似通配符的占位符:
query = """
SELECT attributes.boardgamecategory, details.name, details.description
FROM BoardGames
WHERE details.maxplayers <= ? AND
details.maxplaytime <= ? AND
game.type = 'boardgame' AND
attributes.boardgamecategory LIKE ?
ORDER BY RANDOM() LIMIT 1
"""
cur.execute(query, (max_players, max_playtime, '%Adventure%'))
这管用!但我只是以“冒险”为例。。。它需要根据用户编写的内容进行更改。它将是«catego»:def find_a_gamemax_playtime,max_players,catego然后构建您的通配符表达式,例如输入='Adventure'。。。exp='%'+input+'%'天哪,我发誓我早就试过了,但没用。。。一定是做错了什么,因为它现在起作用了!非常感谢当前执行,最多玩家,最多游戏时间,'%'+catego+'%