2017-12-23 18 views
1

現在のタイムスタンプ、つまりnow()をmariadb(SQL)テーブルに追加しようとしていますが、ターミナルでスクリプトを実行するとエラーが表示されます。他の変数と一緒にmariaDBテーブルにタイムスタンプを挿入

このスクリプトの問題の一部は次のとおりです。

cursor.execute("INSERT INTO outdoorsensorstable 
    (time, col2, col3, col4, col5, col6, col7) 
    VALUES (%s, %s, %s, %s, %s, %s, %s)", 
    (now(), '', '', data4, '', data6, '')) 

(データ4とデータ6は、この前に私のスクリプトで生成された変数です。)

私が得るエラーは以下のとおりです。TypeError: 'datetime.datetime' object is not callable

私は、このようなVALUESセグメントにnow()を置くことによってこの問題を解決しよう:

cursor.execute("INSERT INTO outdoorsensorstable (time, col2, col3, col4, col5, col6, col7) VALUES (now(), %s, %s, %s, %s, %s, %s)", ('', '', '', data4, '', data6, '')) 

が、私は、スクリプトを実行している上、別のエラーが表示されます。

mysql.connector.errors.ProgrammingError: Not all parameters were used in the SQL statement 

任意のアイデアなぜ、どのように私はこの問題を解決することができますか?

答えて

1

あなたの2番目の努力はほぼ正しいです。お返事のための

sql = "INSERT INTO outdoorsensorstable (time, col2, col3, col4, col5, col6, col7) " 
sql += "VALUES (now(), %s, %s, %s, %s, %s, %s)" 
cursor.execute(sql, ('', '', data4, '', data6, '')) 
+0

ありがとう:それはそれはハードコードされているように、パラメータではないためだけで、NOW()のための任意のパラメータを渡す必要はありません。私はどうしたらいいですか?引用符(now、)、%s、%s、%s、%s、%sを引用符で囲まずに削除しようとしました(cursor.execute(INSERT INTO outdoorsensorstable(time、col2、col3、col4、col5、col6、col7) now()に対応する部分については、(、 '、'、data4、 ''、data6、 '')) 'が返されますが、別のエラーが返される – Craver2000

+0

@ Craver2000それが動作しない場合は別の外観とコメントを持ってください。 –

+0

@ Craver2000実行したコードは、私の答えには何もありません。あなたが間違ってコピーしたり、道に沿ってタイプミスを犯した。 –

関連する問題