【问题标题】:cursor does not return correct results游标没有返回正确的结果
【发布时间】:2017-08-24 23:17:01
【问题描述】:

我尝试使用 2 种不同的方式执行 mysql 查询,如下所示:

选项 1:

bankd1= ("SELECT * FROM  Bank_loan  WHERE id in  (%s)" % placeholders)
cur.execute(bankd1)

选项 2:

bankd= "SELECT * FROM  Bank_loan WHERE id in  (%s)"
cur.execute(bankd, placeholders)

选项 1 始终正常工作。但在选项 2 的情况下,即使数据库中存在记录,有时也无法显示结果(如选项 1 所确认)

关于 python 中的字符串替换或游标如何处理参数,我有什么遗漏吗?


更新:

在以下情况下,选项 1 有效,因为有 ID 81220 的条目

选项 1:

placeholders = '81220, 63266'

选项 2:

placeholders = '63266, 81220'

选项2不起作用,因为没有63266的条目。Mysql只检查字符串中的第一项。

如何提供元组而不是字符串?

使用第一个可行的选项 (bankd1) 很容易。但我想知道提供元组以执行方法的正确方法。

【问题讨论】:

    标签: python python-3.x


    【解决方案1】:

    cur.execute 将序列作为第二个参数;单个字符串将被视为单字符字符串序列。使用显式元组:

    cur.execute(bankd, (placeholders,))
    

    【讨论】:

    • 还是同样的问题。更改为元组没有任何区别。行为不一致。它适用于某些 ID。
    猜你喜欢
    • 1970-01-01
    • 2023-03-14
    • 2014-09-13
    • 2012-08-01
    • 2014-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多