0

Apache2でPythonスクリプトを実行しようとしましたが、失敗しました。/var/log/apache2/error.logによると、「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()
4

1 に答える 1

0

この行

COST, INTEGER,

2 つの列を作成します。

于 2012-07-23T10:42:14.700 に答える