MySQL:用随机值更新多行

我有一张桌子叫rainfall. 它有 2 列(sensorIDarea, timerainfallredalert

http://img2.mukewang.com/64478b4a0001588b02890174.jpg

我想以 5 分钟的间隔用随机时间填充时间列(例如 12:55、04:30、07:45)。我设法通过使用此 Python 代码获得了随机时间:


import mysql.connector

import random

import datetime

import time



MINTIME = datetime.datetime(2020,4,1,0,0,0)

MAXTIME = datetime.datetime(2020,7,1,0,0,0)


mintime_str = int(time.mktime(MINTIME.timetuple())) #convert date to INT

maxtime_str = int(time.mktime(MAXTIME.timetuple())) #convert date to INT


no_steps = (maxtime_str - mintime_str)//(5*6) #state the number of minutes interval to 5 minutes


sql = "UPDATE rainfall SET date = %s"

rand = ''


for RECORD in range(108):

    random_slot = random.randint(0, no_steps)

    random_ts = mintime_str + 5*60 * random_slot

    RANDOMTIME = datetime.datetime.fromtimestamp(random_ts)

    rand = datetime.datetime.strftime(RANDOMTIME, '%H:%M')



val = (rand,)



mycursor.execute(sql, val)


raindb.commit()


print(mycursor.rowcount, "record(s) affected")


问题是这段代码只用 1 个值及时填充所有行:

http://img1.mukewang.com/64478b5800015b7503090170.jpg

我需要在每一行中使用不同的值。如果某些行具有重复的时间值,那很好。



斯蒂芬大帝
浏览 198回答 2
2回答

波斯汪

你只能用 SQL 来做:update rainfall  set time = concat(  lpad(floor(rand() * 24), 2, '0'),  ':',  lpad(floor(rand() * 12) * 5, 2, '0')); 

MYYA

我会使用rand()如下:update rainfall  set time = sec_to_time(floor(rand() * 60 * 60 * 24 / (5 * 60) * 5 * 60)表达式rand() * 60 * 60 * 24为您提供代表时间的随机秒数。然后您可以使用floor()和乘法将其四舍五入到最接近的 5 分钟。最后,time_to_sec()把它变成一个time.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python