如何使用MySQL数据库中的新值更新所有列值

时间:2017-09-18 02:41:21

标签: python mysql database

我使用Python从API中提取数据并使用这些值更新MySQL数据库。我意识到,正如我的代码现在一样,我想从API获取的数据只是在第一次运行代码时被插入到数据库中,但是每当代码在第一次执行后需要使用新值更新数据库。 API提供接近实时航空公司的位置,速度,高度等的实时值。我的数据库如下所示:

table aircraft:
+-------------+------------+------------+-----------+-----------+
|  longitude  |  latitude  |  velocity  | altitude  |  heading  |
+-------------+------------+------------+-----------+-----------+
|             |            |            |           |           |
|             |            |            |           |           |

我对MySQL很陌生,我很难找到如何以正确的方式做到这一点。关键是运行代码以便随时更新表。或者可能每10秒钟左右。我正在使用Python的MySQLdb模块,以便在python代码中执行SQL命令。这是我目前所拥有的主要部分。

#"states" here is a list  of state vectors from the api that have the data I want
states = api.get_states()

#creates a cursor object to execute SQL commands
#the parameter to this function should be an SQL command 
cursor = db.cursor()

#"test" is the database name
cursor.execute("USE test")

print("Adding states from API ")
for s in states.states:
    if( s.longitude is not None and s.latitude is not None):
        cursor.execute("INSERT INTO aircraft(longitude, latitude) VALUES (%r, %r);", (s.longitude, s.latitude))
    else:
        ("INSERT INTO aircraft(longitude, latitude) VALUES (NULL, NULL);")
    if(s.velocity is not None):
        cursor.execute("INSERT INTO aircraft(velocity) VALUES (%r);" % s.velocity)
    else:
        cursor.execute("INSERT INTO aircraft(velocity) VALUES (NULL);")
    if(s.altitude is not None):
        cursor.execute("INSERT INTO aircraft(altitude) VALUES (%r);" % s.altitude)
    else:
        cursor.execute("INSERT INTO aircraft(altitude) VALUES (NULL);")
    if(s.heading is not None):
        cursor.execute("INSERT INTO aircraft(heading) VALUES (%r);" % s.heading)
    else:
        cursor.execute("INSERT INTO aircraft(heading) VALUES (NULL);")

db.commit()

0 个答案:

没有答案