【问题标题】:Pass python list as parameter to MySQL.connector将 python 列表作为参数传递给 MySQL.connector
【发布时间】:2021-06-01 15:32:20
【问题描述】:

我有一个查询,我试图传递给 python MySQL.connector,例如:

        cursor.execute("""
        SELECT x.Code as MatchCode,
            m.CUI,
            GROUP_CONCAT(m.CODE separator '|') Codes, 
            GROUP_CONCAT(m.SAB separator '|') Sources
            FROM umls.MRCONSO m,
            (SELECT * FROM umls.MRCONSO WHERE code in (%s)) x
        WHERE x.cui = m.cui and x.sab in (%s)
        GROUP BY m.CUI;
        """ % (mdr_format_strings, sab_format_strings), mdr_ids, sabs)

mdr_ids = ["1234", "5678"]sabs=["Source1", "Source2"] 的位置

我试图在cursor.execute 语句中将这些作为参数传递,但遇到了麻烦。

最好的方法是什么?

提前致谢。

【问题讨论】:

    标签: python mysql mysql-python


    【解决方案1】:

    一个选项可能是通过将这些参数转换为元组数组来组合这些参数,例如

    prm = [
        (1234,5678), 
        ('Source1','Source2')
        ]
    
    cursor.execute("""
                      SELECT x.Code as MatchCode, m.CUI,
                             GROUP_CONCAT(m.CODE separator '|') Codes, 
                             GROUP_CONCAT(m.SAB separator '|') Sources
                        FROM umls.MRCONSO m
                        JOIN (SELECT * FROM umls.MRCONSO WHERE code in (%s)) x
                       WHERE x.cui = m.cui 
                         AND x.sab IN (%s)
                       GROUP BY m.CUI
                   """ , prm)
    

    mdr_ids 的值保留为未引用,假设 code 是列的数字类型(如果不是,也将它们引用)。

    【讨论】:

      猜你喜欢
      • 2019-03-02
      • 2019-11-18
      • 2011-03-16
      • 2011-01-20
      • 1970-01-01
      • 2018-06-03
      • 1970-01-01
      • 2012-03-07
      • 1970-01-01
      相关资源
      最近更新 更多