0

だから私は次のコードを持っています、そしてそれは機能します:

for count in range(0,1000):
    L=[random.randint(0, 127),random.randint(0, 127),random.randint(0, 127)]
    random.randint(0, 127)
    name=''.join(map(chr,L))

    number=random.randint(0,1000)

    x.execute('insert into testTable set name=(%s), number=(%s)', (name, number))

上記のxは、私が作成したカーソルです(明らかに)。ASCII値と乱数からランダムな文字列を作成してデータベースに書き込むだけです(これは純粋にBSの例であるため、機能することがわかりました)/

それで、

私は別のスクリプトにあります:

x.execute('insert into rooms set \
        room_name=(%s),\
        room_sqft=(%s),\
        room_type=(%s),\
        room_purpose=(%s) ,\
        room_floor_number=(%s)',
        (name, sqft, roomType, room_use_ranking, floor))

そして、構文エラーが発生します。最初の行のxで無効な構文です。x.executeの一部です。

2つの線の違いは何ですか?問題のコードでは、name以外のすべての引数はint(nameは文字列)であり、不正な入力エラーをキャッチするint(raw_input(...))タイプのプロンプトから取得されます。

明らかにこれは機能しますが、2番目のコードで何が問題になっていますか?

ありがとう、nkk

4

1 に答える 1

0

x.execute の前の行に問題があります。(この時点で x は予想外です)。もっと多くのファイルをリンクできますか?

また、このフォーマットを試してみてください。文字列を 1 つのブロブにすることで、この種の問題を解決できます。(シンタックス ハイライターも、1 つの大きな複数行の文字列として表示する必要があります!)

sql = '''
    INSERT INTO rooms
    SET room_name=(%s),
        room_sqft=(%s),
        room_type=(%s),
        room_purpose=(%s),
        room_floor_number=(%s)
'''

x.execute(sql, (name, sqft, roomType, room_use_ranking, floor))
于 2012-06-14T22:10:35.417 に答える