2012-07-23 2 views
0

Apache2에서 python 스크립트를 시도했는데 을 시도했지만 실패했습니다. /var/log/apache2/error.log에 따르면 "sqlite3.OperationalError : table card_data에 11 개의 열이 있지만 10 개의 값이 제공되었습니다."sqlite3.OperationalError : 테이블 card_data에는 11 개의 열이 있지만 값은 10 개가 제공되었습니다.

card_data 테이블에 11 개의 열이있는 이유를 이해할 수 없습니다. 10 개의 열이어야합니다.

또한 con.execute ("PRAGMA table_info (card_data)") 도 시도했지만 card_data에는 10 개의 열이 있습니다.

저는 card_data에 11 개의 열이있는 이유와이 문제를 해결하는 방법을 알고 싶습니다. 감사합니다.

#!/usr/bin/python 
    # -*- coding: utf-8 -*- 

    import cgi 
    import sqlite3 

    f = cgi.FieldStorage() 
    cardname = unicode(f.getfirst("cardname", "default string"), 'utf-8') 
    cardtype = unicode(f.getfirst("cardtype", "default string"), 'utf-8') 
    cost = unicode(f.getfirst("cost", "default string"), 'utf-8') 
    color = unicode(f.getfirst("color", "default string"), 'utf-8') 
    text = unicode(f.getfirst("text", "default string"), 'utf-8') 
    igflag = unicode(f.getfirst("igflag", "default string"), 'utf-8') 
    tribe = unicode(f.getfirst("tribe", "default string"), 'utf-8') 
    power = unicode(f.getfirst("power", "default string"), 'utf-8') 
    cardid = unicode(f.getfirst("cardid", "default string"), 'utf-8') 
    dispname = unicode(f.getfirst("displayname", cardname), 'utf-8') 

    conn = sqlite3.connect("carddata.db") 

    sql = u"""create table if not exists card_data(
     NAME TEXT, 
     TYPE TEXT, 
     COST, INTEGER, 
     COLOR TEXT, 
     CRADTEXT TEXT, 
     IGNITION NULL, 
     TRIBE TEXT, 
     POWER INTEGER, 
     CARDID TEXT, 
     DISPLAY TEXT); 
    """ 
    conn.execute(sql) 
    conn.commit() 

    sql = u"insert into card_data values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)" 
    conn.execute(sql, (cardname, cardtype, int(cost), color, text, igflag, tribe, int(power), cardid, dispname)) 
    conn.commit() 

답변

0

이 줄

COST, INTEGER, 

개의 열을 만든다.

+0

도움을 주셔서 감사합니다.하지만 어쨌든, 같은 오류가 여전히 존재합니다. – user1545503

+0

아마도'sqlite3' 도구를 사용하여 파이썬 밖에서 SQL을 점검해야 할 것입니다. –

+0

감사합니다. 나는 그것을 시도 할 것이다. – user1545503

관련 문제