質問: u"insert into sensor values(now(), %s,%s,%s)"%(value,t,h) cursor.execute(sql) connector.commit() cursor.close() connector.close()
回答: MySQLのnow() を利用しているように見えますが、 pythonの質問でしょうか? now()を利用しているということは MySQL上ではdatetimeもしくはtimestampで扱っているかと思います。 pythonで分単位切り捨てを行おうと思うと 例えば ``` from datetime import datetime datetime.now().strftime('%Y-%m-%d %H:%M:00') ``` のようになります。 出力は文字列です。 詳しくはpythonのstrftimeで利用できるformatを見てください。 一方、MySQLでは、文字列で受け取った時刻データをdatetime型としてデータベースに保存するには、 str_to_date() というMySQLの関数を利用する必要があります。 それを踏まえると ``` sql = u"insert into sensor values(now(), %s,%s,%s)"%(value,t,h) ``` を ``` sql = u"insert into sensor values(str_to_date('%s', '%%Y-%%m-%%d %%H:%%i:%%S') ,%s,%s,%s)"%(datetime.now().strftime('%Y-%m-%d %H:%M:00'),value,t,h) ``` のような書き方をすればよいかもしれません。 ( %%H:%%i:%%S の代わりに %%Tが使えるかもしれません) 今回は%記法を利用しているため、 Python文字列中で%を使うために%%と二重に記載する必要があります。 他に format文字列というのもあり、そちらだと ``` sql = u"insert into sensor values(str_to_date('{}', '%Y-%m-%d %H:%i:%S') ,{},{},{})".format(datetime.now().strftime('%Y-%m-%d %H:%M:00'),value,t,h) ``` のように若干すっきり書けます。