MySQL Python查询单独工作,但参数化时失败

MySQL Python查询单独工作,但参数化时失败,python,mysql,json,Python,Mysql,Json,基本上,我有一个MySQL表,如下所示: CREATE TABLE markets ( id INTEGER AUTO_INCREMENT NOT NULL, root_symbol VARCHAR(64) NOT NULL, metadata JSON NOT NULL, PRIMARY KEY (id) ); metadata = { 'tick_size': 0.01, 'currency': 'USD' } 元数据列包含一个JSO

基本上,我有一个MySQL表,如下所示:

CREATE TABLE markets (
    id INTEGER AUTO_INCREMENT NOT NULL,
    root_symbol VARCHAR(64) NOT NULL, 
    metadata JSON NOT NULL, 
    PRIMARY KEY (id)
);
metadata = {
    'tick_size': 0.01, 
    'currency': 'USD'
}
元数据列包含一个JSON文档,如下所示:

CREATE TABLE markets (
    id INTEGER AUTO_INCREMENT NOT NULL,
    root_symbol VARCHAR(64) NOT NULL, 
    metadata JSON NOT NULL, 
    PRIMARY KEY (id)
);
metadata = {
    'tick_size': 0.01, 
    'currency': 'USD'
}
在Python中,以下两行可以工作:

cur.execute("SELECT root_symbol FROM markets WHERE JSON_EXTRACT(metadata, '$.currency') = 'USD'")
cur.execute("SELECT root_symbol FROM markets WHERE JSON_EXTRACT(metadata, '$.tick_size') = 0.25")
但是,当参数化时,这两个参数不会:

cur.execute("SELECT root_symbol FROM markets WHERE JSON_EXTRACT(metadata, '$.%s') = %s", ('currency', "USD"))
cur.execute("SELECT root_symbol FROM markets WHERE JSON_EXTRACT(metadata, '$.%s') = %s", ('tick_size', 0.25))

有人能给我解释一下为什么以及如何修理它吗?谢谢大家!

您需要参数化
JSON\u EXTRACT()
的整个字段值:

请注意,占位符周围没有引号-如果需要,数据库驱动程序会自动将其放进去