【问题标题】:Not enough arguments for format string Python-MySQL格式字符串 Python-MySQL 的参数不足
【发布时间】:2015-10-16 09:01:23
【问题描述】:

我在 python 中遇到了这个错误,我不知道如何解决它。对不起,我的英语不是我的母语:(

TypeError:格式字符串的参数不足

save_data = "INSERT INTO mediciones_historial VALUES('%s', '%s', '%s', '%s')" % (sensor, data, data_type)

在我的数据库中,我有五行:

id (int) 传感器(整数) 数据(文本) 数据类型(文本) fecha(时间戳)

我做错了什么?

谢谢!

【问题讨论】:

    标签: python mysql


    【解决方案1】:

    这是因为值的数量与参数的数量不匹配。

    save_data = "INSERT INTO mediciones_historial VALUES('%s', '%s', '%s', '%s')" % (sensor, data, data_type, fecha)
    

    【讨论】:

    • 感谢您的回复。现在我有这个错误:“列计数与第 1 行的值计数不匹配”。
    • 知道了。您的表架构有 5 列,我们在插入查询中错过了 fecha 列。已经更新了我上面的帖子。
    【解决方案2】:

    在您的代码中:

    save_data = "INSERT INTO mediciones_historial VALUES('%s', '%s', '%s', '%s')" % (sensor, data, data_type)
    

    %s 说明符的数量与您传递的参数数量不匹配,表名后也缺少列名

    你必须根据表格中的列来制作 但是python总是有更好的选择。

    试试这个:

    save_data = "INSERT INTO mediciones_historial(column1,column2,column3) VALUES({0},{1},{2})".format(sensor, data, data_type)
    

    但您必须注意数据类型,即如果它是字符串或日期类型,则使用单引号('):'{0}' 而不是 {0}。

    以上内容似乎更易于理解和可读。 :)

    【讨论】:

    • 我很高兴它有帮助。你也可以接受我的回答:)
    • 这太可怕了。这很容易受到 SQL 注入的影响。执行(“INSERT INTO mediciones_historial(column1,column2,column3)VALUES(%s, %s, %s)", [sensor,data,data_type])
    • @csharpcoder 该示例的第一个变体非常适合我。我努力实施第二个。
    猜你喜欢
    • 2018-06-07
    • 2021-04-01
    • 2019-01-17
    • 2012-06-24
    • 2017-12-28
    • 2017-12-18
    • 2019-07-23
    • 1970-01-01
    相关资源
    最近更新 更多