Python 如何使用SQL参数

Python 如何使用SQL参数,python,sqlite,sqlparameter,Python,Sqlite,Sqlparameter,我正在尝试为我正在制作的一个简单游戏创建一个数据库,但在查询玩家数据时遇到了问题。到目前为止,可以搜索和更新数据库,但只有通过修改实际代码才能更改搜索词 到目前为止的全部代码(对任何缩进错误表示歉意): 我想为这一部分找到一个解决方案: # Function that (only) retrieves data from the database def retrieve_db(mode, name): # Returns value of player's score if m

我正在尝试为我正在制作的一个简单游戏创建一个数据库,但在查询玩家数据时遇到了问题。到目前为止,可以搜索和更新数据库,但只有通过修改实际代码才能更改搜索词

到目前为止的全部代码(对任何缩进错误表示歉意):

我想为这一部分找到一个解决方案:

# Function that (only) retrieves data from the database
def retrieve_db(mode, name):
    # Returns value of player's score
    if mode is "score":
        print("Retrieving scores")
        print("Finding", name)
        command = ("""
                    SELECT score FROM players
                    WHERE username = 'John Smith'
                    """)
        return cur.execute(command).fetchone()[0]
我想要一个将name参数传递到这个命令中的解决方案,而不是其中的username='John Smith',因此无论name参数是什么,都将成为正在搜索的术语

我在这里找到了一个类似的例子(),但我一直在研究如何在这段代码中实现(?)(变量)思想

到目前为止,我所尝试的:

    command = ("""
                SELECT score FROM players
                WHERE username = VALUES (?)""", name)

    command = ("""
                SELECT score FROM players
                WHERE username VALUES (?)""", name)
非常感谢您能给予的任何帮助。提前谢谢

作为将来的参考,我得到的最终工作版本是:

    command = ("""
                SELECT score FROM players
                WHERE username = ?
                """)
    return cur.execute(command, name).fetchone()[0]

其中调用函数时,名称作为['John Smith']提供。

值是函数的必需部分

参数标记(
)只是替换值本身:

命令=(“”“
从玩家中选择分数
其中username=?
""")
params=['John Smith']
返回cur.execute(命令,参数).fetchone()[0]

你考虑过放弃吗?逗号太少

您已经在
populate\u db
中使用了参数。问题是什么?在该函数中,它只是将值插入所有字段,而不进行搜索。我的问题是在命令中使用(?)(变量)来实现同样的想法,在命令中也会进行搜索。到目前为止,我尝试了一些不同的变体,但运气不佳。编辑问题以显示您尝试过的内容。还有一个问题,是否需要重新构造它,使参数不必是列表?否。
'John Smith'
将被解释为包含十个字符的列表。
    command = ("""
                SELECT score FROM players
                WHERE username = ?
                """)
    return cur.execute(command, name).fetchone()[0]
example_data = [("John Smith", "Password", 10)]
cur.executemany("""
                INSERT INTO players
                VALUES (?, ?, ?)""",