以下是设置: 我有两个数据库,一个是只读的,另一个是写的。目前每次"阅读"数据库被轮询"写"数据库的行被删除并重新插入。不幸的是,在此轮询过程中,信息显示不准确,直到轮询完成。我很难写出适当的条件,这些条件会告诉"写"数据库更新如果"读"信息存在于"写"数据库,如果没有则删除,如果是新则插入。
以下是我实现目标的尝试。
sql_cam 从"读取"数据库。 cam_check 从"写"数据库中。
for s,d in zip(sql_cam, cam_check):
try:
if s[0] != d[1]:
print 'delete, insert'
cursor.execute("""DELETE FROM CamTable WHERE client=?
INSERT INTO CamTable(client, guid, camera, ip, model, firmware, CreationDate)
VALUES(?, ?, ?, ?, ?, ?, ?)
""", client_name, client_name, s[0], s[1], s[2], s[3], s[4], s[5])
cnxn.commit()
else:
print 'update'
cursor.execute("""
UPDATE CamTable SET camera=?, ip=?, model=?, firmware=?, CreationDate=?
WHERE guid=?
""", d[1])
cnxn.commit()
except pyodbc.error:
pass