【问题标题】:How to use a Python list in a condition for Mysql如何在 Mysql 的条件中使用 Python 列表
【发布时间】:2021-06-21 16:38:30
【问题描述】:

我在 python 中有这个列表:

list_accounts =['30000451728022100000127007', '0011801410', '30024891622032100004168003'] 

我想在这样的查询中使用它:

select a.order_id, transaction_status, gmv
from master.fulfillment a
inner join master.txns b
on a.order_id = b.order_id
where a.account_number in ('30000451728022100000127007', '0011801410','30024553922032100000439005');

到目前为止,我得到了这个:

q1 = "select a.order_id, transaction_status, gmv "\
     "from master.fulfillment a "\
     "inner join master.txns b "\
     "on a.order_id = b.order_id "\
     "where a.account_number in "+ list_accounts + ""

cursor.execute(q1)

如何将列表放入查询中以获得正确的 sinstaxis?

【问题讨论】:

    标签: python jquery mysql list join


    【解决方案1】:

    创建一个包含与列表长度一样多的占位符的字符串,并在WHERE 条件中使用它。然后使用list_accounts作为参数填充占位符。

    您还需要在in 列表周围使用()

    placeholders = ','.join(['%s'] * len(list_accounts))
    q1 = f"""
        select a.order_id, transaction_status, gmv
        from master.fulfillment a
        inner join master.txns b
        on a.order_id = b.order_id
        where a.account_number in ({placeholders})"""
    cursor.execute(q1, list_accounts)
    

    【讨论】:

      【解决方案2】:

      您可以使用字符串格式和.join():

      query = """select .......... where a.account_number in ({});""".format(', '.join(list_accounts))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-12-11
        • 1970-01-01
        • 2012-05-19
        • 2016-09-21
        • 1970-01-01
        • 2022-10-23
        • 2022-07-06
        • 1970-01-01
        相关资源
        最近更新 更多