0

sqlite3でテーブルを作成しました。構造は次のとおりです。

cid     name                    type    notnull         pk
0   wheelId                 INTEGER 1       1
1   wheelName           VARCHAR 1       0
2   paraDiam            INTEGER 0       0
3   paraWidth           FLOAT   0       0
4   paraEt                  FLOAT   0       0
5   paraHole            INTEGER 0       0
6   factParaHole            INTEGER 0       0
7   paraCenterhole          FLOAT   0       0
8   wheelColorName          VARCHAR 0       0
9   wheelColorNameShow  TEXT    0       0
10  paraWeight          FLOAT   0       0
11  vpPrice                 INTEGER 0       0
12  ntStock                 INTEGER 0       0
13  wheelURL            VARCHAR 0       0
14  wheelImg            VARCHAR 0       0
15  wheelRank           INTEGER 0       0

そして今、私はpythonを使用してレコードをテーブルに挿入し、列値'wheelName'、'wheelImg'のみを挿入し、他の列をnullのままにします(最初の列はwheelId、であり、増分できることを願っています)自動的に)。

私はウェブサイトで見つけることができるほとんどすべての方法を使用しました:

  1. cursor.execute("""INSERT INTO WHEELS (wheelName,wheelImg) VALUES (%s,%s)""" , (WHEELNAME,WHEELIMG))

    Pythonがスローしますsqlite3.OperationalError: near "%": syntax error

  2.  

    cursor.execute("""INSERT INTO WHEELS(WHEELID,WHEELNAME, PARADIAM, PARAWIDTH, PARAET,PARAHOLE,FACTPARAHOLE,
                            PARACENTERHOLE,WHEELCOLORNAME,WHEELCOLORNAMESHOW,PARAWEIGHT,VPPRICE,NTSTOCK,
                            WHEELURL,WHEELIMG,WHEELRANK)
    
                   VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)""" ,
                   (WHEELID, WHEELNAME, PARADIAM, PARAWIDTH, PARAET,PARAHOLE,FACTPARAHOLE,
                    PARACENTERHOLE,WHEELCOLORNAME,WHEELCOLORNAMESHOW,PARAWEIGHT,VPPRICE,NTSTOCK,
                    WHEELURL,WHEELIMG,WHEELRANK))
    

ここで、他の値を「いいね」に設定しますNone

PARADIAM = None
PARAWIDTH = None
PARAET = None
PARAHOLE = None

そしてPythonは再びをスローしsqlite3.OperationalError: near "%": syntax errorます。

4

1 に答える 1

2

sqlite3アダプタは?SQLパラメータに使用しますが、次のものではありません%s

cursor.execute("INSERT INTO WHEELS (wheelName,wheelImg) VALUES (?, ?)", (WHEELNAME,WHEELIMG))

スキーマも制限しますwheelColorNameShow

"wheelColorNameShow" TEXT check(typeof("wheelColorNameShow") = 'text')

つまり、NULLにすることはできなくなります。その列の値も含める必要があります

cursor.execute('insert into wheels (wheelName,wheelImg,wheelColorNameShow) VALUES (?, ?, ?)', ('test', 'test', 'test'))

成功します。

于 2013-02-06T02:43:56.753 に答える