【问题标题】:How to Add Two BLObs to an MySQL Row via Python如何通过 Python 将两个 BLOb 添加到 MySQL 行
【发布时间】:2023-03-17 04:25:02
【问题描述】:

我现在可以使用以下代码 sn-ps 将 BLOb 插入一行:-

TheData = open("/home/mjh/Documents/DemoData/sjp.bin", 'rb').read()

sql = "Insert into Results (idResults, idClient, TestDateTime, ResultBinary) 
    Values (10, 7, '2014-11-05 14:09:11', %s)"

cursor.execute(sql, (TheData,))

但是我想将多个 BLOb 放入同一行并将代码扩展为:-

sql = "Insert into Results (idResults, idClient, TestDateTime, ResultBinary, SecondResult) 
    Values (10, 7, '2014-11-05 14:09:11', %s, %s)"

cursor.execute(sql, (TheData, SecondData,))

这会产生错误:-

_mysql_exceptions.OperationalError: (1241, 'Operand should contain 1 column(s)')

这似乎是基于扩展插入以添加其他字段类型的逻辑更改(对我而言)。这是否意味着我必须先插入(针对第一个 BLOb),然后再执行更新(针对第二个 BLOb)?

【问题讨论】:

    标签: python mysql python-2.7 blob


    【解决方案1】:

    您是否尝试过使用命名参数,即:

    sql = "Insert into Results (idResults, idClient, TestDateTime, ResultBinary, SecondResult) 
        Values (10, 7, '2014-11-05 14:09:11', %(one)s, %(two)s)"
    
    cursor.execute(sql, { 'one': TheData, 'two': SecondData})
    

    Reference

    【讨论】:

    • 适用于我的设置 - 所以现在有两个选项,而不是两个小时前的“无”...
    【解决方案2】:

    我已经检查过它是否适合我。将多个字段值传递给 sql 执行函数并没有错。错误是您可能会通过 python 列表。您应该将其转换为字符串并传递给该执行函数。请查看以下链接:

    MySqlDb throws Operand should contain 1 column(s) on insert ignore statement

    【讨论】:

      【解决方案3】:

      我发现将 Execute 行更改为:-

      cursor.execute(sql, ([TheData, SecondData]))

      工作。会尝试其他方法

      【讨论】:

        猜你喜欢
        • 2012-08-27
        • 1970-01-01
        • 1970-01-01
        • 2014-02-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-11
        • 2014-09-01
        相关资源
        最近更新 更多