Python 从excel到mysql的格式字符串参数不足

Python 从excel到mysql的格式字符串参数不足,python,mysql,Python,Mysql,我正试图将所有的信息从excel放到mysql中,在处理这些信息的过程中会遇到这些问题。 努力解决它! 已计算所有%s,似乎没有遗漏任何一个 query = """INSERT INTO sanction (id, organization_type, organization, date, decision_number, penalty_type, penalty_way penalty, violation, execution_period,

我正试图将所有的信息从excel放到mysql中,在处理这些信息的过程中会遇到这些问题。 努力解决它! 已计算所有%s,似乎没有遗漏任何一个

query = """INSERT INTO sanction (id, organization_type, organization, date, decision_number, penalty_type, penalty_way
                       penalty, violation, execution_period, article, note, type_npa, department, uploaded_date) 
                        VALUES(null, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"""


for r in range(1, sheet.nrows):
    organization_type = sheet.cell(r,1).value
    organization = sheet.cell(r,2).value
    date = sheet.cell(r,3).value
    decision_number = sheet.cell(r,4).value
    penalty_type = sheet.cell(r,5).value
    penalty_way = sheet.cell(r,6).value
    penalty = sheet.cell(r,7).value
    violation = sheet.cell(r,8).value
    execution_period = sheet.cell(r,9).value
    article =sheet.cell(r,10).value
    note =sheet.cell(r,11).value
    type_npa =sheet.cell(r,12).value
    department =sheet.cell(r,13).value
    uploaded_date =datetime.now().strftime("%Y-%m-%d %H:%M") 


    values = (organization_type, organization, date, decision_number, penalty_type, 
                  penalty_way,penalty, violation, execution_period,article, note, type_npa, department,uploaded_date)


    mycursor.execute(query, [values])

我注意到可能导致此错误的两个因素:

  • 您的变量
    已经是一个
    元组
    ,因此不需要将其包装到新的
    列表中

    也就是说,改变这一行

    mycursor.execute(query, [values])
    

  • 您在查询中列出目标列名的部分也缺少一个逗号,介于
    penal\u way
    penal
    之间


  • 对于这么多的争论,我建议重新构造代码,这样您就可以更容易地看到是否遗漏了任何内容

    例如,这里有一个版本,它将1-3-3-3-3-2格式中的15个参数分为3部分:查询的第一部分、查询的第二部分,以及在构建
    元组时

    query = """
        INSERT INTO sanction (
            id,
            organization_type, organization, date,
            decision_number, penalty_type, penalty_way,
            penalty, violation, execution_period,
            article, note, type_npa,
            department, uploaded_date)
        VALUES (
            null,
            %s, %s, %s,
            %s, %s, %s,
            %s, %s, %s,
            %s, %s, %s,
            %s, %s)
    """
    
    for r in range(1, sheet.nrows):
        organization_type = sheet.cell(r, 1).value
        organization = sheet.cell(r, 2).value
        date = sheet.cell(r, 3).value
        decision_number = sheet.cell(r, 4).value
        penalty_type = sheet.cell(r, 5).value
        penalty_way = sheet.cell(r, 6).value
        penalty = sheet.cell(r, 7).value
        violation = sheet.cell(r, 8).value
        execution_period = sheet.cell(r, 9).value
        article = sheet.cell(r, 10).value
        note = sheet.cell(r, 11).value
        type_npa = sheet.cell(r, 12).value
        department = sheet.cell(r, 13).value
        uploaded_date = datetime.now().strftime("%Y-%m-%d %H:%M")
    
        values = (
            # the first value of the INSERT statement will be NULL
            organization_type, organization, date,              # 3 elements
            decision_number, penalty_type, penalty_way,         # 3 elements
            penalty, violation, execution_period,               # 3 elements
            article, note, type_npa,                            # 3 elements
            department, uploaded_date,                          # 2 elements
        )
        mycursor.execute(query, values)
    

    对于下一个问题,请在问题中添加完整的错误堆栈跟踪,因为它包含查找错误原因的重要信息。
    query = """
        INSERT INTO sanction (
            id,
            organization_type, organization, date,
            decision_number, penalty_type, penalty_way,
            penalty, violation, execution_period,
            article, note, type_npa,
            department, uploaded_date)
        VALUES (
            null,
            %s, %s, %s,
            %s, %s, %s,
            %s, %s, %s,
            %s, %s, %s,
            %s, %s)
    """
    
    for r in range(1, sheet.nrows):
        organization_type = sheet.cell(r, 1).value
        organization = sheet.cell(r, 2).value
        date = sheet.cell(r, 3).value
        decision_number = sheet.cell(r, 4).value
        penalty_type = sheet.cell(r, 5).value
        penalty_way = sheet.cell(r, 6).value
        penalty = sheet.cell(r, 7).value
        violation = sheet.cell(r, 8).value
        execution_period = sheet.cell(r, 9).value
        article = sheet.cell(r, 10).value
        note = sheet.cell(r, 11).value
        type_npa = sheet.cell(r, 12).value
        department = sheet.cell(r, 13).value
        uploaded_date = datetime.now().strftime("%Y-%m-%d %H:%M")
    
        values = (
            # the first value of the INSERT statement will be NULL
            organization_type, organization, date,              # 3 elements
            decision_number, penalty_type, penalty_way,         # 3 elements
            penalty, violation, execution_period,               # 3 elements
            article, note, type_npa,                            # 3 elements
            department, uploaded_date,                          # 2 elements
        )
        mycursor.execute(query, values)