python
  • sqlite
  • 2017-10-30 12 views 0 likes 
    0
    c.execute("INSERT INTO REDDIT_USER (USERNAME, CREATED_DATE) VALUES ('PHILZEEY', '08-09-17')") 
    

    このトップは動作します。Pythonでsqliteを使用してINSERT INTO

    c.execute('INSERT INTO {tn} (USERNAME, CREATED_DATE) VALUES ({nm}, {dt})'.format(tn='REDDIT_USER', nm='John', dt='09-09-17')) 
    

    このボトムはありません。

    何か不足していますか?

    +0

    私は下の方をしたい理由は、私はいくつかの議論を変えていくつもりだからです。私はそれらをトップのように一定にすることはできません。 – Philzeey

    +0

    あなたは何を得ているのですか?デバッグすると便利です –

    +0

    カラム値の前後に引用符を置いていないのを忘れてしまいました。また、この方法で挿入しないでください。代わりに、パラメータを使用する必要があります。 – mshsayem

    答えて

    1

    2番目のものには挿入された値の前後に引用符がありません。これを試してみてください:

    c.execute("INSERT INTO {tn} (USERNAME, CREATED_DATE) VALUES ('{nm}', '{dt}')".format(tn='REDDIT_USER', nm='John', dt='09-09-17')) 
    
    2

    あなたは位置パラメータでプリペアドステートメントを使用する必要があります:テーブル名にパラメータを作るに関しては

    c.execute("INSERT INTO REDDIT_USER (USERNAME, CREATED_DATE) VALUES (?, ?)", ('John', '2017-09-09')) 
    

    が、これもプリペアドステートメントから、ことはできません。一般に、ほとんどのクエリは別のテーブルでは実行されません。このようにテーブル名を変更できるようにすると、セキュリティリスクが発生する可能性があります。 2つの異なるテーブルを照会する必要がある場合は、それらのテーブルに対して2つの準備済みステートメントを作成します。ところで

    は、あなたがトップ1が動作することを言った:

    実際
    c.execute("INSERT INTO REDDIT_USER (USERNAME, CREATED_DATE) VALUES ('PHILZEEY', '08-09-17')") 
    

    、これはを実行するかもしれないが、それはほぼ確実にあなたのSQLiteデータベースに挿入したい日付データではありません。日付は通常のテキストとして保存されます。ほとんどの場合、年と月、日が続くISO形式で格納する必要があります。たとえば、日付リテラルとして'2017-09-08'を使用できますが、'08-09-17'は使用しないでください。

    +0

    ええ、日付はちょうど一般的だった、私はそれらのための適切な日付形式があります。しかし、私は先に進み、助言のおかげで、あなたが提案したものを試してみましょう! – Philzeey

    関連する問題