前提・実現したいこと
時刻データを1秒増やす方法についてお知恵を貸していただけませんでしょうか?
pythonでmysqlのDBに値を入れております。
発生している問題
下記のようなcsvデータがあり、mysqlのDBへinsertしています。
(id と created_timeは csv からではなく insert時にデータが入っています。
auto_increment と current_timestamp 機能によって)
csv
1app1,1,100,2020/10/16 21:37:31 2app1,1,800,2020/10/16 21:37:31 3app1,1,150,2020/10/16 21:37:31 4app1,1,180,2020/10/16 22:30:31 5app1,2,200,2020/10/16 22:30:31
id | name(varchar) | value1(int) | value2(int) | get_time(timestamp) | created_time(timestamp) |
---|---|---|---|---|---|
1 | app1 | 1 | 100 | 2020-10-16 21:37:31 | 2020-10-23 08:24:45 |
2 | app1 | 1 | 800 | 2020-10-16 21:37:31 | 2020-10-23 08:24:45 |
3 | app1 | 1 | 150 | 2020-10-16 21:37:31 | 2020-10-23 08:24:45 |
4 | app1 | 2 | 180 | 2020-10-16 22:30:31 | 2020-10-23 08:24:45 |
5 | app1 | 2 | 200 | 2020-10-16 22:30:31 | 2020-10-23 08:24:45 |
###このとき 次の行と比較した場合に value1 の値が同じ場合は、次のデータは +1秒したいのです。
つまり、こういう結果にしたいのです。
id | name(varchar) | value1(int) | value2(int) | get_time(timestamp) | created_time(timestamp) |
---|---|---|---|---|---|
1 | app1 | 1 | 100 | 2020-10-16 21:37:31 | 2020-10-23 08:24:45 |
2 | app1 | 1 | 800 | 2020-10-16 21:37:32 | 2020-10-23 08:24:45 |
3 | app1 | 1 | 150 | 2020-10-16 21:37:33 | 2020-10-23 08:24:45 |
4 | app1 | 2 | 180 | 2020-10-16 22:30:31 | 2020-10-23 08:24:45 |
5 | app1 | 2 | 200 | 2020-10-16 22:30:32 | 2020-10-23 08:24:45 |
該当のソースコード
with codecs.open('CSVファイル','r','utf-8','ignore') as f: for line in f: name, value1, value2, get_time = map(str, line.split(',')) cursor.execute('INSERT INTO table_name (name,value1,value2,get_time) values(\'{}\',\'{}\',\'{}\',\'{}\');'.format(name,value1,value2,get_time))
試したこと
変数を1つ用意して、
for文でcsvファイルの行を1行読むたびにその用意した変数に value1 の値をいれ、次回の行を読み込んだ際に比較して、同じ値だったら get_time の値を1つ(1秒)増やそうとしました。
しかしながら、get_timeは文字列のため、値を1すら(1秒)ふやせません。(+1ができない)
補足情報(FW/ツールのバージョンなど)
mysql Ver 8.0.21
python3.8.5
Ubuntu18.04
質問
データベースに投入後の変換 または データベースに投入前での変換 方法はどちらでも構いませんので、時刻データを1秒増やす方法をご存知の方いらっしゃいましたらお知恵をお借りできませんでしょうか?
よろしくお願い致します。
回答2件
あなたの回答
tips
プレビュー