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()