在where子句

时间:2019-07-16 08:43:38

标签: python mysql

我有一个奇怪的问题,我无法获得带有参数的SQL查询以在where子句中进行字符串比较-我没有返回任何行。当我通过bash连接到MySQL数据库时,查询有效。

  • python 3.7.3
  • mysql-connector-python == 8.0.11
  • mysql 5.7

有效(进入我的行):

select * from my_table where my_column = 'my_string';

也可以(进入我的行):

cursor.execute(
    """
        select *
        from my_table
        where my_column = 'my_string'
    """
)

不起作用(cursor.fetchall()[]):

cursor.execute(
    """
        select *
        from my_table
        where my_column = '%s'
    """,
    ('my_string')
)

2 个答案:

答案 0 :(得分:1)

删除引号:

cursor.execute(
    """
        select *
        from my_table
        where my_column = %s
    """,
    ('my_string')
)

答案 1 :(得分:1)

小心元组。我认为您需要('my_string',)


仅供参考,我写了@tscherg在问题下方的评论中提到的原始评论。