MySQLdb._exceptions.OperationalError: (1136, «Количество столбцов не соответствует значению в строке 1») - PullRequest
0 голосов
/ 07 ноября 2019

Я пытаюсь вытянуть кучу значений из следующей html-формы в python, а затем в базу данных MySQL, но продолжаю сталкиваться с "

MySQLdb._exceptions.OperationalError: (1136,"Количество столбцов не соответствует значению в строке 1 "):

" код ошибки. Я попытался добавить первичный ключ (id, auto_increment), но он, похоже, не влияет на проблему.

Вот соответствующие выдержки:

@app.route('/character/new', methods=['GET', 'POST'])
@is_logged_in
def character_new():
    cur = mysql.connection.cursor()
    if request.method == 'POST':
        image = "NULL"
        userid = get_userid()
        character_name = request.form['character_name']
        alignment = request.form['alignment']
        race = request.form['race']
        _class = request.form['class']
        sex = request.form['sex']
        level = request.form['level']
        experience = request.form['experience']
        stat_str = request.form['stat_str']
        stat_dex = request.form['stat_dex']
        stat_con = request.form['stat_con']
        stat_int = request.form['stat_int']
        stat_wis = request.form['stat_wis']
        stat_cha = request.form['stat_cha']
        mod_str = request.form['mod_str']
        mod_dex = request.form['mod_dex']
        mod_con = request.form['mod_con']
        mod_int = request.form['mod_int']
        mod_wis = request.form['mod_wis']
        mod_cha = request.form['mod_cha']
        sav_str = request.form['sav_str']
        sav_dex = request.form['sav_dex']
        sav_con = request.form['sav_con']
        sav_int = request.form['sav_int']
        sav_wis = request.form['sav_wis']
        sav_cha = request.form['sav_cha']
        hitpoints = request.form['hitpoints']
        armor_class = request.form['armor_class']
        cur_hitpoints = request.form['cur_hitpoints']
        speed = request.form['speed']
        initiative = request.form['initiative']
        prof_bonus = request.form['prof_bonus']
        ski_aco = request.form['ski_aco']
        ski_ani = request.form['ski_ani']
        ski_arc = request.form['ski_arc']
        ski_ath = request.form['ski_ath']
        ski_dec = request.form['ski_dec']
        ski_his = request.form['ski_his']
        ski_ins = request.form['ski_ins']
        ski_int = request.form['ski_int']
        ski_inv = request.form['ski_inv']
        ski_med = request.form['ski_med']
        ski_nat = request.form['ski_nat']
        ski_per = request.form['ski_per']
        ski_pef = request.form['ski_pef']
        ski_pes = request.form['ski_pes']
        ski_rel = request.form['ski_rel']
        ski_soh = request.form['ski_soh']
        ski_sth = request.form['ski_sth']
        ski_sur = request.form['ski_sur']
        prof_trait_abi = request.form['prof_trait_abi']
        languages = request.form['languages']
        items = request.form['items']
        equipment = request.form['equipment']
        treasures = request.form['treasures']
        wep_1 = request.form['wep_1']
        wep_2 = request.form['wep_2']
        wep_3 = request.form['wep_3']
        wep_4 = request.form['wep_4']
        att_1 = request.form['att_1']
        att_2 = request.form['att_2']
        att_3 = request.form['att_3']
        att_4 = request.form['att_4']
        dmg_1 = request.form['dmg_1']
        dmg_2 = request.form['dmg_2']
        dmg_3 = request.form['dmg_3']
        dmg_4 = request.form['dmg_4']
        typ_1 = request.form['typ_1']
        typ_2 = request.form['typ_2']
        typ_3 = request.form['typ_3']
        typ_4 = request.form['typ_4']
        amm_1 = request.form['amm_1']
        amm_2 = request.form['amm_2']
        amm_3 = request.form['amm_3']
        amt_1 = request.form['amt_1']
        amt_2 = request.form['amt_2']
        amt_3 = request.form['amt_3']
        spl_1 = request.form['spl_1']
        spl_2 = request.form['spl_2']
        spl_3 = request.form['spl_3']
        spl_4 = request.form['spl_4']
        spl_att_1 = request.form['spl_att_1']
        spl_att_2 = request.form['spl_att_2']
        spl_att_3 = request.form['spl_att_3']
        spl_att_4 = request.form['spl_att_4']
        spl_dmg_1 = request.form['spl_dmg_1']
        spl_dmg_2 = request.form['spl_dmg_2']
        spl_dmg_3 = request.form['spl_dmg_3']
        spl_dmg_4 = request.form['spl_dmg_4']
        values=(image, userid, character_name, alignment, race, _class, sex, level, experience,stat_str, stat_dex, stat_con, stat_int, stat_wis, stat_cha, mod_str, mod_str, mod_dex, mod_con, mod_int, mod_wis, mod_cha,sav_str, sav_dex, sav_con, sav_int, sav_wis, sav_cha, hitpoints, armor_class, cur_hitpoints, speed, initiative, prof_bonus, ski_aco, ski_ani, ski_arc, ski_ath, ski_dec, ski_his, ski_ins, ski_int, ski_inv, ski_med, ski_nat, ski_per, ski_pef, ski_pes, ski_rel, ski_soh, ski_sth, ski_sur, prof_trait_abi, languages, items, equipment, treasures, wep_1, wep_2, wep_3, wep_4, att_1, att_2, att_3, att_4, dmg_1, dmg_2, dmg_3, dmg_4, typ_1, typ_2, typ_3, typ_4, amm_1, amm_2, amm_3, amt_1, amt_2, amt_3, spl_1,spl_2, spl_3, spl_4, spl_att_1, spl_att_2, spl_att_3, spl_att_3, spl_att_4, spl_dmg_1, spl_dmg_2, spl_dmg_3, spl_dmg_4)
        cur.execute("INSERT INTO characters(image, userid, character_name, alignment, race, class, sex, level, experience, stat_str, stat_dex, stat_con, stat_int, stat_wis, stat_cha, mod_str, mod_dex, mod_con, mod_int, mod_wis, mod_cha, sav_str, sav_dex, sav_con, sav_int, sav_wis, sav_cha, hitpoints, armor_class, cur_hitpoints, speed, initiative, prof_bonus, ski_aco, ski_ani, ski_arc, ski_ath, ski_dec, ski_his, ski_ins, ski_int, ski_inv, ski_med, ski_nat, ski_per, ski_pef, ski_pes, ski_rel, ski_soh, ski_sth, ski_sur, prof_trait_abi, languages, items, equipment, treasures, wep_1, wep_2, wep_3, wep_4, att_1, att_2, att_3, att_4, dmg_1, dmg_2, dmg_3, dmg_4, typ_1, typ_2, typ_3, amm_1, amm_2,amm_3, amt_1, amt_2, amt_3, spl_1, spl_2, spl_3, spl_4, spl_att_1, spl_att_2, spl_att_3, spl_att_4, spl_dmg_1, spl_dmg_2, spl_dmg_3, spl_dmg_4) VALUES(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s,%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)", values)
        mysql.connection.commit()
        cur.close()
        flash("Success", "success")
    else:
        flash("ERROR", "danger")
        cur.close()
    return render_template('character_new.html')

Форма HTMLhttps://pastebin.com/XFQrubHi

MySQL Table https://pastebin.com/qwqVCu7a

Заранее спасибо за помощь!

1 Ответ

1 голос
/ 07 ноября 2019

У вас есть spl_att_3 и mod_str дважды в кортеже values. И список вставляемых столбцов отсутствует typ_4.

values=(image, userid, character_name, alignment, race, _class, sex, level, experience,stat_str, stat_dex, stat_con, stat_int, stat_wis, stat_cha, mod_str, mod_dex, mod_con, mod_int, mod_wis, mod_cha,sav_str, sav_dex, sav_con, sav_int, sav_wis, sav_cha, hitpoints, armor_class, cur_hitpoints, speed, initiative, prof_bonus, ski_aco, ski_ani, ski_arc, ski_ath, ski_dec, ski_his, ski_ins, ski_int, ski_inv, ski_med, ski_nat, ski_per, ski_pef, ski_pes, ski_rel, ski_soh, ski_sth, ski_sur, prof_trait_abi, languages, items, equipment, treasures, wep_1, wep_2, wep_3, wep_4, att_1, att_2, att_3, att_4, dmg_1, dmg_2, dmg_3, dmg_4, typ_1, typ_2, typ_3, typ_4, amm_1, amm_2, amm_3, amt_1, amt_2, amt_3, spl_1,spl_2, spl_3, spl_4, spl_att_1, spl_att_2, spl_att_3, spl_att_4, spl_dmg_1, spl_dmg_2, spl_dmg_3, spl_dmg_4)
cur.execute("INSERT INTO characters(image, userid, character_name, alignment, race, class, sex, level, experience, stat_str, stat_dex, stat_con, stat_int, stat_wis, stat_cha, mod_str, mod_dex, mod_con, mod_int, mod_wis, mod_cha, sav_str, sav_dex, sav_con, sav_int, sav_wis, sav_cha, hitpoints, armor_class, cur_hitpoints, speed, initiative, prof_bonus, ski_aco, ski_ani, ski_arc, ski_ath, ski_dec, ski_his, ski_ins, ski_int, ski_inv, ski_med, ski_nat, ski_per, ski_pef, ski_pes, ski_rel, ski_soh, ski_sth, ski_sur, prof_trait_abi, languages, items, equipment, treasures, wep_1, wep_2, wep_3, wep_4, att_1, att_2, att_3, att_4, dmg_1, dmg_2, dmg_3, dmg_4, typ_1, typ_2, typ_3, type_4, amm_1, amm_2,amm_3, amt_1, amt_2, amt_3, spl_1, spl_2, spl_3, spl_4, spl_att_1, spl_att_2, spl_att_3, spl_att_4, spl_dmg_1, spl_dmg_2, spl_dmg_3, spl_dmg_4) VALUES(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s,%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)", values)
...